首先是將漢字轉(zhuǎn)換為拼音:
導(dǎo)入依賴:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
創(chuàng)建轉(zhuǎn)拼音的靜態(tài)方法toPinyin,也可以封裝成工具類,使用工具類進(jìn)行調(diào)用:
public static String toPinyin(String chinese){
String pinyinStr = "";
char[] newChar = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < newChar.length; i++) {
if (newChar[i] > 128) {
try {
pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}else{
pinyinStr += newChar[i];
}
}
return pinyinStr;
}
在方法中調(diào)用成功,這里我需要大寫并且每個漢字之間保持空格,操作如下:
String name="西青果顆粒藏青果顆";
String[] split = name.split("");
String finalPy="";
for (String s : split) {
String s1 = toPinyin(s).toUpperCase(Locale.ROOT);
finalPy= finalPy+" "+s1;
}
System.out.println(finalPy.trim());
這里一切都沒有問題,但是如果當(dāng)字符串中包含非英文的特殊符號,會報錯如下:
這里需要進(jìn)行替換,將中文下的各種符號替換為英文狀態(tài)下的:
使用String的replaceAll方法進(jìn)行替換,如圖:
后來出現(xiàn)了羅馬符號各種,這種方式就太麻煩了,可以判斷每個字符是否是漢字,是漢字就調(diào)用toPinyin方法進(jìn)行轉(zhuǎn)換,不是漢字則不轉(zhuǎn),實現(xiàn)的方法有很多,這里使用一種:通過unicode編碼范圍進(jìn)行判斷:
Pattern p2 = Pattern.compile("[\u4e00-\u9fa5]");
Matcher m2 = p2.matcher(s);
可以看到,不管什么符號,都會原樣輸出,
這里附上其他編碼范圍:文章來源:http://www.zghlxwxcb.cn/news/detail-615006.html
類型 | 范圍 |
---|---|
漢字 | [0x4e00,0x9fa5] |
數(shù)字 | [0x30,0x39] |
小寫字母 | [0x61,0x7a] |
大寫字母 | [0x41,0x5a] |
參考鏈接:java中判斷字符串是否是中文的方法文章來源地址http://www.zghlxwxcb.cn/news/detail-615006.html
到了這里,關(guān)于Java將漢字轉(zhuǎn)拼音以及判斷字符是否為漢字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!