import net.sourceforge.pinyin4j.PinyinHelper; |
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; |
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; |
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; |
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; |
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; |
public class ChineseToEnglish { |
public static void main(String[] args) { |
System.out.println(getPingYin( "辛倩倩521" )); //后面跟的数字个字母不会被转换 |
System.out.println(getPingYin( "辛倩倩" )); |
//值得注意的是在多音字的问题上面转换没有那么智能 |
System.out.println(getPingYin( "李长威" )); //李长(Chang)威-->Zhang |
System.out.println(getPingYin( "李常威" )); //李常(Chang)威-->Chang |
|
System.out.println(getPinYinHeadChar( "辛倩倩" )); |
System.out.println(getCnASCII( "辛倩倩" )); |
} |
// 将汉字转换为全拼 |
public static String getPingYin(String src) { |
char [] t1 = null ; |
t1 = src.toCharArray(); |
String[] t2 = new String[t1.length]; |
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); |
|
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE); |
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE); |
t3.setVCharType(HanyuPinyinVCharType.WITH_V); |
String t4 = "" ; |
int t0 = t1.length; |
try { |
for ( int i = 0 ; i < t0; i++) { |
// 判断是否为汉字字符 |
if (java.lang.Character.toString(t1[i]).matches( |
"[\\u4E00-\\u9FA5]+" )) { |
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3); |
t4 += t2[ 0 ]; |
} else |
t4 += java.lang.Character.toString(t1[i]); |
} |
// System.out.println(t4); |
return t4; |
} catch (BadHanyuPinyinOutputFormatCombination e1) { |
e1.printStackTrace(); |
} |
return t4; |
} |
// 返回中文的首字母 |
public static String getPinYinHeadChar(String str) { |
String convert = "" ; |
for ( int j = 0 ; j < str.length(); j++) { |
char word = str.charAt(j); |
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); |
if (pinyinArray != null ) { |
convert += pinyinArray[ 0 ].charAt( 0 ); |
} else { |
convert += word; |
} |
} |
return convert; |
} |
// 将字符串转移为ASCII码 |
public static String getCnASCII(String cnStr) { |
StringBuffer strBuf = new StringBuffer(); |
byte [] bGBK = cnStr.getBytes(); |
for ( int i = 0 ; i < bGBK.length; i++) { |
strBuf.append(Integer.toHexString(bGBK[i] & 0xff )); |
} |
return strBuf.toString(); |
} |
} |
// |
//Maven |
<!-- https: //mvnrepository.com/artifact/com.belerweb/pinyin4j --> |
<dependency> |
<groupId>com.belerweb</groupId> |
<artifactId>pinyin4j</artifactId> |
<version> 2.5 . 0 </version> |
</dependency> |