java中获取中文拼音(全拼)和中文首字母 | 您所在的位置:网站首页 › tuⅰjian的拼音 › java中获取中文拼音(全拼)和中文首字母 |
目录
一、引入依赖二、代码三、解释1、创建格式化对象HanyuPinyinOutputFormat2、设置输出结果的大小写格式3、设置声调格式4、进行汉字转拼音操作
四、作用
一、引入依赖
com.belerweb
pinyin4j
2.5.0
二、代码
/**
* 获取中文全拼
*
* @param name 需要转换的中文
* @return 全拼结果
**/
public static String getFullPinyin(String name) {
// 创建格式化对象
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
//设置大小写格式
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//设置声调格式
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 放置输入结果
StringBuilder result = new StringBuilder();
// 字符数组
char[] charArray = name.toCharArray();
// 遍历字符
for (char c : charArray) {
// 中文会被变成全拼,非中文会被直接拼接在结果字符串中
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
String[] pinyinArray = new String[0];
try {
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
if (pinyinArray != null) {
result.append(pinyinArray[0]);
}
} else {
result.append(c);
}
}
return result.toString();
}
/**
* 获取中文首字母
*
* @param name 需要转换的中文
* @return 首字母结果
**/
public static String getPinyinInitial(String name) {
// 创建格式化对象
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
//设置大小写格式
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//设置声调格式
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 放置输入结果
StringBuilder result = new StringBuilder();
// 字符数组
char[] charArray = name.toCharArray();
// 遍历字符
for (char c : charArray) {
// 中文会被变成拼音首字母,非中文会被直接拼接在结果字符串中
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
String[] pinyinArray = new String[0];
try {
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
if (pinyinArray != null) {
result.append(pinyinArray[0].charAt(0));
}
} else {
result.append(c);
}
}
return result.toString();
}
三、解释
1、创建格式化对象HanyuPinyinOutputFormat
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
2、设置输出结果的大小写格式
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
括号中的参数有两个选择项,分别是:HanyuPinyinCaseType.LOWERCASE( 转换后以小写方式输出)、HanyuPinyinCaseType.UPPERCASE(转换后以大写方式输出) 3、设置声调格式 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);括号中的参数有三个选择项,分别是:HanyuPinyinToneType.WITHOUT_TONE(无声调表示,例如:liu)、HanyuPinyinToneType.WITH_TONE_NUMBER(用数字表示声调,例如:liu2)、HanyuPinyinToneType.WITH_TONE_MARK(用声调符号表示,例如:liú) 如果选择HanyuPinyinToneType.WITH_TONE_MARK(用声调符号表示,例如:liú)抓中方式展示,还可以对展示值做进一步的设置,例如: outputFormat.setVCharType(HanyuPinyinVCharType); 括号中的参数可以有三个选择项,分别是:HanyuPinyinVCharType.WITH_U_UNICODE(以拼音格式表示,例如:以ü表示)、HanyuPinyinVCharType.WITH_U_AND_COLON(以U和一个冒号表示该拼音,例如:lu:)、HanyuPinyinVCharType.WITH_V(以V表示该字符,例如:lv) 4、进行汉字转拼音操作 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);数组中只有第一个元素有值,所以只用取出下标为0的结果,记得处理抛出的异常 四、作用上述两个功能在即时通讯产品中应用比较广泛,比如微信就是一个很好的例子,你可以尝试使用全拼或者首字母组合去微信搜索框中搜索,你会发现你能找到想要的结果,我猜测在用户注册的时候,微信会将用户名称、用户名称全拼、用户名称首字母拼写都存入了数据库或者搜索引擎中 |
CopyRight 2018-2019 实验室设备网 版权所有 |