package com.lvtu.csa.utils;
import com.lvmama.comm.utils.StringUtil;
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 org.apache.log4j.Logger;
/**
* 中文转文拼音
*/
public class ChineseToSpellUtil {
private static Logger logger = Logger.getLogger(ChineseToSpellUtil.class);
HanyuPinyinOutputFormat format;
/**
* 改用嵌套类静态实始化
*
* @return
*/
public static ChineseToSpellUtil getInstance() {
return SingleContainer.instance;
}
public static class SingleContainer {
private static ChineseToSpellUtil instance = new ChineseToSpellUtil();
}
private ChineseToSpellUtil() {
format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 是否大小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 是否有音调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);//
}
/**
*
* @param srcStr
* 元字符串
* @return
*/
public String getSpell(String srcStr) {
if (StringUtil.isEmptyString(srcStr)) {
return "";
}
char[] srcChar = srcStr.toCharArray();
StringBuffer sbf = new StringBuffer();
String[] tmp = new String[srcChar.length];
try {
for (char c : srcChar) {
// 判断是否为汉字
// logger.info(Character.toString(c));
if (Character.toString(c).matches("[\\u4E00-\\u9FBF]+")) {
tmp = PinyinHelper.toHanyuPinyinStringArray(c, format);
sbf.append(tmp[0]);
} else {
sbf.append(Character.toString(c));
}
}
} catch (Exception e) {
logger.error(e);
}
return sbf.toString().toUpperCase();
}
/**
* 汉字转为拼音大写,并据跟separate进行分割</br> (驴妈妈,"|")->LV|MA|MA
*
* @param srcStr
* @param separate
* @return
*/
public String getSpellBySplit(String srcStr, String separate) {
if (StringUtil.isEmptyString(srcStr)) {
return "";
}
char[] srcChar = srcStr.toCharArray();
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 是否大小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 是否有音调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);//
StringBuffer sbf = new StringBuffer();
String[] tmp = new String[srcChar.length];
try {
for (char c : srcChar) {
// 判断是否为汉字
// logger.info(Character.toString(c));
if (Character.toString(c).matches("[\\u4E00-\\u9FBF]+")) {
tmp = PinyinHelper.toHanyuPinyinStringArray(c, format);
sbf.append(tmp[0]);
sbf.append(separate);
} else {
sbf.append(Character.toString(c));
}
}
} catch (Exception e) {
logger.error(e);
}
return sbf.toString().toUpperCase();
}
}
import com.lvmama.comm.utils.StringUtil;
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 org.apache.log4j.Logger;
/**
* 中文转文拼音
*/
public class ChineseToSpellUtil {
private static Logger logger = Logger.getLogger(ChineseToSpellUtil.class);
HanyuPinyinOutputFormat format;
/**
* 改用嵌套类静态实始化
*
* @return
*/
public static ChineseToSpellUtil getInstance() {
return SingleContainer.instance;
}
public static class SingleContainer {
private static ChineseToSpellUtil instance = new ChineseToSpellUtil();
}
private ChineseToSpellUtil() {
format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 是否大小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 是否有音调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);//
}
/**
*
* @param srcStr
* 元字符串
* @return
*/
public String getSpell(String srcStr) {
if (StringUtil.isEmptyString(srcStr)) {
return "";
}
char[] srcChar = srcStr.toCharArray();
StringBuffer sbf = new StringBuffer();
String[] tmp = new String[srcChar.length];
try {
for (char c : srcChar) {
// 判断是否为汉字
// logger.info(Character.toString(c));
if (Character.toString(c).matches("[\\u4E00-\\u9FBF]+")) {
tmp = PinyinHelper.toHanyuPinyinStringArray(c, format);
sbf.append(tmp[0]);
} else {
sbf.append(Character.toString(c));
}
}
} catch (Exception e) {
logger.error(e);
}
return sbf.toString().toUpperCase();
}
/**
* 汉字转为拼音大写,并据跟separate进行分割</br> (驴妈妈,"|")->LV|MA|MA
*
* @param srcStr
* @param separate
* @return
*/
public String getSpellBySplit(String srcStr, String separate) {
if (StringUtil.isEmptyString(srcStr)) {
return "";
}
char[] srcChar = srcStr.toCharArray();
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 是否大小写
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 是否有音调
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);//
StringBuffer sbf = new StringBuffer();
String[] tmp = new String[srcChar.length];
try {
for (char c : srcChar) {
// 判断是否为汉字
// logger.info(Character.toString(c));
if (Character.toString(c).matches("[\\u4E00-\\u9FBF]+")) {
tmp = PinyinHelper.toHanyuPinyinStringArray(c, format);
sbf.append(tmp[0]);
sbf.append(separate);
} else {
sbf.append(Character.toString(c));
}
}
} catch (Exception e) {
logger.error(e);
}
return sbf.toString().toUpperCase();
}
}