package com.sysware.task.util;
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;
/**
* <h1>中文转英文工具类</h1>
*
* @author : P2M.WBA
* @version : 2.9.6
* @copyright : Sysware Technology Co.,Ltd
* @date : 2018/06/21
*/
public class ChineseToEnglishUtil {
/**
* @description :将汉字转换为全拼
* @author : P2M.WBA
* @date : 2018/6/21 14:49
*/
public static String getPingYin(String str) {
// 字符串转成字符数组
char[] charArray = str.toCharArray();
// 创建字符串数组,大小为字符数组
String[] stringArray = new String[charArray.length];
// 输出流
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
// 设置拼音大小写
hanyuPinyinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanyuPinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder sb = new StringBuilder();
int charArrayLength = charArray.length;
try {
for (int i = 0; i < charArrayLength; i++) {
// 判断是否为汉字字符
if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
stringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], hanyuPinyinOutputFormat);
sb.append(stringArray[0]);
} else
sb.append(Character.toString(charArray[i]));
}
return sb.toString();
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* @description :将汉字转换为简拼
* @author : P2M.WBA
* @date : 2018/6/21 14:54
*/
public static String getPinYinHeadChar(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char word = str.charAt(i);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
// 获取拼音的首字母
sb.append(pinyinArray[0].charAt(0));
} else {
sb.append(word);
}
}
return sb.toString();
}
/**
* @description :将字符串转移为ASCII码
* @author : P2M.WBA
* @date : 2018/6/21 14:57
*/
public static String getCnASCII(String str) {
StringBuilder sb = new StringBuilder();
byte[] bGBK = str.getBytes();
for (int i = 0; i < bGBK.length; i++) {
sb.append(Integer.toHexString(bGBK[i] & 0xff));
}
return sb.toString();
}
}