?
今天看了一篇博客(http://guyexin-126-com.iteye.com/blog/842954)里说关于pinyin4j的即将汉字转成汉语拼音,感觉在有的个别项目中确实可能用到,而这又属于公用的,所以决定在自己的博客里多分一个Util类,即总结收集可以作为工具类,如果大家也有这些比较好的工具类可以交流交流。
今天就列pinyin4j吧,刚才也说了pinyin4j是的作用就是将汉字转成汉语拼音,pinyin4j就是一个支持中文转中文拼音的Java开源类库。
其主页:http://pinyin4j.sourceforge.net/
package com.iflytek.pinyin4j; 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; /** * @author xudongwang 2012-1-11 * * Email:xdwangiflytek@gmail.com */ public class Pinyin4jUtil { public static void main(String[] args) { String str = "王旭东"; System.out.println(getPinYin(str)); System.out.println(getPinYinHeadChar(str)); System.out.println(getStrASCII(str)); } /** * 将汉字转换为全拼 * * @param str * 汉字 * @return String 返回汉字的全拼音 */ public static String getPinYin(String str) { char[] strCharArray = null; strCharArray = str.toCharArray(); String[] pinYinArray = new String[strCharArray.length]; // 设置汉字拼音输出的格式 HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); //设置拼音的大小写,UPPERCASE表示大写,LOWERCASE表示小写 format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); String result = ""; int flag = strCharArray.length; try { for (int i = 0; i < flag; i++) { // 判断能否为汉字字符 if (Character.toString(strCharArray[i]).matches("[\\u4E00-\\u9FA5]+")) { pinYinArray = PinyinHelper.toHanyuPinyinStringArray(strCharArray[i], format);// 将汉字的几种全拼都存到pinYinArray数组中 result += pinYinArray[0];// 取出该汉字全拼的第一种读音并连接到字符串result后 } else { // 如果不是汉字字符,间接取出字符并连接到字符串result后 result += Character.toString(strCharArray[i]); } } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return result; } /** * 提取每个汉字的首字母 * * @param str * 汉字 * @return String 返回汉字的拼音首字母 */ public static String getPinYinHeadChar(String str) { String convert = ""; for (int j = 0; j < str.length(); j++) { char word = str.charAt(j); // 提取汉字的首字母 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert; } /** * 将字符串转换成ASCII码 * * @param str * 需要转换的字符串 * @return String 字符串转换后的ASCII码 */ public static String getStrASCII(String str) { StringBuffer strBuf = new StringBuffer(); // 将字符串转换成字节序列 byte[] bGBK = str.getBytes(); for (int i = 0; i < bGBK.length; i++) { // 将每个字符转换成ASCII码 strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } }
?说明:
HanyuPinyinOutputFormat格式:
其他具体的方法参数等可以参考官网给出的文档;
?