需求:页面查询框输入汉字首字母或全拼查询需求,这里主要实现为,在数据库增加一个字段存放拼音,然后新增的时候将中文转拼音后存入该字段。后续方便查询
// 将汉字转化为全拼
public static String getPinyin(String src)
{
char toChar[] = src.toCharArray();
String[] toCharCp = new String[toChar.length];
HanyuPinyinOutputFormat hanyuFormat = new HanyuPinyinOutputFormat();
hanyuFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanyuFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanyuFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder sb = new StringBuilder();
try
{
for (int i = 0; i < toChar.length; i++)
{
// 判断是否为汉字字符
if (Character.toString(toChar[i]).matches("[\\u4E00-\\u9FA5]+"))
{
toCharCp = PinyinHelper.toHanyuPinyinStringArray(toChar[i], hanyuFormat);
sb.append(toCharCp[0]);
}
else
{
sb.append(Character.toString(toChar[i]));
}
}
}
catch (BadHanyuPinyinOutputFormatCombination e)
{
e.printStackTrace();
}
return sb.toString();
}
// ----------------------------------------返回中文的首字母--------------------
public static String getPinYinHeadChar(String str)
{
String convert = "";
for (int i = 0; i < str.length(); i++)
{
char word = str.charAt(i);
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();
}
// --------------------------测试拼音转汉字是否正确----------------------------
public static void main(String[] args)
{
System.out.println(getPinyin("联创集团abc1"));
// 返回拼音的全拼样式
System.out.println(getPinYinHeadChar("中运天狂11"));
// 返回拼音的首字母
System.out.println(getCnASCII("联创集团"));
// 返回拼音的ASCII
System.out.println();
}