基于pinyin4j封装的拼音操作工具类

pinyin4j是一个开源的流行java库(官网地址:http://pinyin4j.sourceforge.net/,在线文档:http://pinyin4j.sourceforge.net/pinyin4j-doc/ ),使用来处理中文转换成拼音(汉语拼音,罗马拼音等),功能强大。
有几个常用的类:
net.sourceforge.pinyin4j.PinyinHelper;
net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
PinyinHelper:提供了几个实用程序函数,用于将中文字符(简体和繁体)转换为各种中文罗马化表示。
HanyuPinyinOutputFormat:这个类定义了如何输出汉语拼音。
HanyuPinyinCaseType:为汉语拼音字符串的输出案例提供了几种选项。
HanyuPinyinToneType:该类提供了几种输出中文音调的选项。
HanyuPinyinVCharType:这个类为’ü’的输出提供了几个选项。

使用的时候需要下载pinyin4j.jar包,或者通过maven下载,依赖如下:
 <dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

基于pinyin4j封装的工具类:

import org.apache.commons.lang3.StringUtils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PyUtils {
	
	/**
	 * 通过字符串获取大写拼音
	 * @param Str
	 * @return
	 * @throws BadHanyuPinyinOutputFormatCombination
	 */
	public static String getPyByStr(String Str) {
		try {
			if(StringUtils.isBlank(Str)){
				return "";
			}
			char[] charArray = Str.toCharArray();
			HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
			// 通过循环获取拼音
			StringBuffer buffer = new StringBuffer();
			for (int i = 0; i < charArray.length; i++) {
				String[] hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], outputFormat);
				if (hanyuPinyinStringArray != null && hanyuPinyinStringArray.length > 0) {
					buffer.append(hanyuPinyinStringArray[0].charAt(0));
				} else {
					buffer.append(charArray[i]);
				}
			}
			return buffer.toString().toUpperCase();
		} catch (Exception e) {
			return "";
		}
	}

	/**
	 * 
	 * @Title: replaceSpecialCharacter
	 * @Description: 将特殊字符换为target字符串,""代表直接去掉
	 * @param source
	 *            源字符串 如:ZJ0.5~0.7CMDT≥98%
	 * @param target
	 *            将特殊字符替换的结果 如:ZJ0507CMDT98
	 * @return
	 * @Date 2020年9月3日
	 */
	public static String replaceSpecialCharacter(String source,String target ) {
		// 可以在中括号内加上任何想要替换的字符,实际上是一个正则表达式
		String regEx = "[\n`~!@#$%%^&*()+=|{}':;',\\[\\].<>≤≥/?~!@#¥%……&*()()——+|{}【】‘;:”“’。, 、?]";
		String pyByStr = PyUtils.getPyByStr(source);
		String newString = pyByStr.replaceAll(regEx, target);
		return newString;
	}
	
	/**
	 * 获取首个拼音首字母
	 * @param name
	 * @return 
	 * @Date 2020年9月3日
	 */
	public static String getFirstAz(String name) {
		String py = getPyByStr(name);
		for (int i = 0; i < py.length(); i++) {
			String s = String.valueOf(py.charAt(i));
			if(s.matches("[A-Z]")) {
				return s;
			}
		}
		return "X";
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值