UtilPinyin.java
2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.taover.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class UtilPinyin {
/**
* 对单个字进行转换
* @param pinYinStr 需转换的汉字字符串
* @return 拼音字符串数组
*/
public static String getCharPinYin(char pinYinStr){
String[] pinyin = null;
try{
//执行转换
//拼音字符串数组
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
/*
* 设置需要转换的拼音格式
* 以天为例
* HanyuPinyinToneType.WITHOUT_TONE 转换为tian
* HanyuPinyinToneType.WITH_TONE_MARK 转换为tian1
* HanyuPinyinVCharType.WITH_U_UNICODE 转换为tiān
*/
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
pinyin = PinyinHelper.toHanyuPinyinStringArray(pinYinStr, format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//pinyin4j规则,当转换的符串不是汉字,就返回null
if(pinyin == null || pinyin.length<1){
return null;
}
//多音字会返回一个多音字拼音的数组,pinyiin4j并不能有效判断该字的读音
return pinyin[0];
}
/**
* 对单个字进行转换
* @param pinYinStr
* @return
*/
public String getStringPinYin(String pinYinStr){
StringBuffer sb = new StringBuffer();
String tempStr = null;
//循环字符串
for(int i = 0; i<pinYinStr.length(); i++){
tempStr = this.getCharPinYin(pinYinStr.charAt(i));
if(tempStr == null){
//非汉字直接拼接
sb.append(pinYinStr.charAt(i));
}else{
sb.append(tempStr);
}
}
return sb.toString();
}
}