package com.joyce.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; /** * PinYin4j * @author Joyce.Luo * @date 2015-5-14 下午01:04:38 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015 */ public class PinyinUtil { public static void main(String[] args) { String str1 = PinyinUtil.toPinyinString(‘张‘); System.out.println("chinese char --> " + str1); String str2 = PinyinUtil.toPinyinString(‘c‘); System.out.println("english char --> " + str2); String str3 = PinyinUtil.toPinyinString("张三"); System.out.println("chinese string --> " + str3); String str4 = PinyinUtil.toPinyinString("Hello World"); System.out.println("english string --> " + str4); String str5 = PinyinUtil.toPinyinString("Hi 张三,hello world!"); System.out.println("chinese and english --> " + str5); } /** * 获取Pinyin输出格式 * @return Pinyin输出格式 * @author Joyce.Luo * @date 2015-5-14 下午01:40:10 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015 */ private static HanyuPinyinOutputFormat getPinyinFormat(){ HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); /* * UPPERCASE:大写 (ZHONG) * LOWERCASE:小写 (zhong) */ format.setCaseType(HanyuPinyinCaseType.LOWERCASE); /* * WITHOUT_TONE:无音标 (zhong) * WITH_TONE_NUMBER:1-4数字表示英标 (zhong4) * WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng) */ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); /* * WITH_V:用v表示ü (nv) * WITH_U_AND_COLON:用"u:"表示ü (nu:) * WITH_U_UNICODE:直接用ü (nü) */ format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); // 返回输出格式 return format; } /** * 将字符转换为Pinyin * 若为英文字符,则直接输出 * 若字符为多音字,则取第一个 * @param c 待转换字符 * @return 转换后字符串 * @author Joyce.Luo * @date 2015-5-14 下午01:34:55 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015 */ public static String toPinyinString(char c) { HanyuPinyinOutputFormat format = PinyinUtil.getPinyinFormat(); try { String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format); if (null == pinyin || pinyin.length < 1) { return String.valueOf(c); } return pinyin[0]; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 字符串转换为Pinyin * @param str 待转换字符串 * @return 转换后字符串 * @author Joyce.Luo * @date 2015-5-14 下午01:38:17 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015 */ public static String toPinyinString(String str){ if (null == str || "".equals(str)) { return null; } StringBuilder sb = new StringBuilder(); String tempPinyin = null; for (int i = 0; i < str.length(); i++) { tempPinyin = PinyinUtil.toPinyinString(str.charAt(i)); sb.append(tempPinyin); } return sb.toString(); } }
原文地址:http://blog.csdn.net/luo201227/article/details/46515885