java中文轉(zhuǎn)拼音工具類詳解
更新時間:2019年04月22日 08:32:37 作者:Tlimited
這篇文章主要為大家詳細(xì)介紹了java中文轉(zhuǎn)拼音工具類的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java中文轉(zhuǎn)拼音工具類的具體代碼,供大家參考,具體內(nèi)容如下
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PinyinUtil {
public static String getPinyin(String paramString) {
return getPinyinZh_CN(convertStringByChinese(paramString));
}
public static String getPinyinToUpperCase(String paramString) {
return getPinyinZh_CN(convertStringByChinese(paramString)).toUpperCase();
}
public static String getPinyinToLowerCase(String paramString) {
return getPinyinZh_CN(convertStringByChinese(paramString)).toLowerCase();
}
public static String getPinyinFirstToUpperCase(String paramString) {
return getPinyin(paramString);
}
private static HanyuPinyinOutputFormat getDefaultFormat() {
HanyuPinyinOutputFormat localHanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
localHanyuPinyinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
localHanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
localHanyuPinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
return localHanyuPinyinOutputFormat;
}
private static Set<String> convertStringByChinese(String paramString) {
char[] arrayOfChar1 = paramString.toCharArray();
if ((paramString != null) && (!paramString.trim().equalsIgnoreCase(""))) {
char[] arrayOfChar2 = paramString.toCharArray();
String[][] arrayOfString = new String[paramString.length()][];
for (int i = 0; i < arrayOfChar2.length; i++) {
char c = arrayOfChar2[i];
if ((String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) || (String.valueOf(c).matches("[\\u3007]"))) {
try {
arrayOfString[i] = PinyinHelper.toHanyuPinyinStringArray(arrayOfChar1[i], getDefaultFormat());
} catch (BadHanyuPinyinOutputFormatCombination localBadHanyuPinyinOutputFormatCombination) {
localBadHanyuPinyinOutputFormatCombination.printStackTrace();
}
} else {
arrayOfString[i] = new String[] { String.valueOf(arrayOfChar2[i]) };
}
}
String[] arrayOfString1 = exchange(arrayOfString);
HashSet localHashSet = new HashSet();
for (int j = 0; j < arrayOfString1.length; j++) {
localHashSet.add(arrayOfString1[j]);
}
return localHashSet;
}
return null;
}
private static String[] exchange(String[][] paramArrayOfString) {
String[][] arrayOfString = doExchange(paramArrayOfString);
return arrayOfString[0];
}
private static String[][] doExchange(String[][] paramArrayOfString) {
int i = paramArrayOfString.length;
if (i >= 2) {
int j = paramArrayOfString[0].length;
int k = paramArrayOfString[1].length;
int m = j * k;
String[] arrayOfString = new String[m];
int n = 0;
for (int i1 = 0; i1 < j; i1++) {
for (int i2 = 0; i2 < k; i2++) {
arrayOfString[n] = (capitalize(paramArrayOfString[0][i1]) + capitalize(paramArrayOfString[1][i2]));
n++;
}
}
String[][] arrayOfString1 = new String[i - 1][];
for (int i2 = 2; i2 < i; i2++) {
arrayOfString1[(i2 - 1)] = paramArrayOfString[i2];
}
arrayOfString1[0] = arrayOfString;
return doExchange(arrayOfString1);
}
return paramArrayOfString;
}
private static String capitalize(String paramString) {
char[] arrayOfChar = paramString.toCharArray();
if ((arrayOfChar != null) && (arrayOfChar.length > 0) && (arrayOfChar[0] >= 'a') && (arrayOfChar[0] <= 'z')) {
arrayOfChar[0] = ((char) (arrayOfChar[0] - ' '));
}
return new String(arrayOfChar);
}
private static String getPinyinZh_CN(Set<String> paramSet) {
StringBuilder localStringBuilder = new StringBuilder();
int i = 0;
Iterator localIterator = paramSet.iterator();
while (localIterator.hasNext()) {
String str = (String) localIterator.next();
if (i == paramSet.size() - 1) {
localStringBuilder.append(str);
} else {
localStringBuilder.append(str + ",");
}
i++;
}
return localStringBuilder.toString();
}
public static String getPinYinHeadChar(String paramString) {
StringBuffer localStringBuffer = new StringBuffer();
if ((paramString != null) && (!paramString.trim().equalsIgnoreCase(""))) {
for (int i = 0; i < paramString.length(); i++) {
char c = paramString.charAt(i);
String[] arrayOfString = PinyinHelper.toHanyuPinyinStringArray(c);
if (arrayOfString != null) {
localStringBuffer.append(arrayOfString[0].charAt(0));
} else {
localStringBuffer.append(c);
}
}
}
return localStringBuffer.toString();
}
public static String strFilter(String paramString) throws PatternSyntaxException {
String str = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?\"]";
Pattern localPattern = Pattern.compile(str);
Matcher localMatcher = localPattern.matcher(paramString);
return localMatcher.replaceAll("").trim();
}
public static String getPinYinHeadCharFilter(String paramString) {
return strFilter(getPinYinHeadChar(paramString));
}
public static void main(String[] paramArrayOfString) {
Logger localLogger = LoggerFactory.getLogger(PinyinUtil.class);
String str = "〇的輸¥¥#s,ldsa";
localLogger.info("小寫輸出:" + getPinyinToLowerCase(str));
localLogger.info("大寫輸出:" + getPinyinToUpperCase(str));
localLogger.info("首字母大寫輸出:" + getPinyinFirstToUpperCase(str));
localLogger.info("返回中文的首字母輸出:" + getPinYinHeadChar(str));
localLogger.info("返回中文的首字母并過濾特殊字符輸出:" + getPinYinHeadCharFilter(str));
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
將本地SpringBoot項目發(fā)布到云服務(wù)器的方法
這篇文章主要介紹了如何將本地SpringBoot項目發(fā)布到云服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù))
這篇文章主要介紹了java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù)),需要的朋友可以參考下2014-04-04
談?wù)凧ava中try-catch-finally中的return語句
我們知道return語句用在某一個方法中,一是用于返回函數(shù)的執(zhí)行結(jié)果,二是用于返回值為void類型的函數(shù)中,僅僅是一個return語句(return ;),此時用于結(jié)束方法的執(zhí)行,也即此return后的語句將不會被執(zhí)行,當(dāng)然,這種情況下return語句后不能再有其它的語句了2016-01-01
Spring Scheduling本地任務(wù)調(diào)度設(shè)計與實現(xiàn)方式
這篇文章主要介紹了Spring Scheduling本地任務(wù)調(diào)度設(shè)計與實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

