java 之 中文转拼音库 pinyin4j 转


Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。 
拼音输出格式可以定制。 
pinyin4j 调用入口为net.sourceforge.pinyin4j.PinyinHelper 

示例代码: 
1.PinyinUtils.java 

Java代码   收藏代码
  1. import net.sourceforge.pinyin4j.PinyinHelper;  
  2. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;  
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;  
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;  
  5. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
  6.   
  7. /** 
  8.  * 汉语拼音 帮助类 
  9.  *  
  10.  * @author lili 
  11.  *  
  12.  */  
  13. public class PinyinUtils {  
  14.     /** 
  15.      * 获取汉字串拼音 
  16.      * @param strCN 
  17.      * @return 汉字串拼音 
  18.      * @throws BadHanyuPinyinOutputFormatCombination 
  19.      */  
  20.     public static String getHanyuPinyin(String strCN)  
  21.             throws BadHanyuPinyinOutputFormatCombination {  
  22.         if(null == strCN){  
  23.             return null;  
  24.         }  
  25.         StringBuffer spell = new StringBuffer();  
  26.         char[] charOfCN = strCN.toCharArray();  
  27.         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  
  28.         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
  29.         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
  30.         for (int i = 0; i < charOfCN.length; i++) {  
  31.             // 是否为中文字符  
  32.             if (charOfCN[i] > 128) {  
  33.                 String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(  
  34.                         charOfCN[i], defaultFormat);  
  35.                 if (null != spellArray) {  
  36.                     spell.append(spellArray[0]);  
  37.                 }else{  
  38.                     spell.append(charOfCN[i]);  
  39.                 }  
  40.             } else {  
  41.                 spell.append(charOfCN[i]);  
  42.             }  
  43.         }  
  44.         return spell.toString();  
  45.     }  
  46.     /** 
  47.      * 获取汉字串 拼音首字母 
  48.      * @param strCN 
  49.      * @return  拼音首字母 
  50.      * @throws BadHanyuPinyinOutputFormatCombination 
  51.      */  
  52.     public static String getFirstHanyuPinyin(String strCN)  
  53.             throws BadHanyuPinyinOutputFormatCombination {  
  54.         if(null == strCN){  
  55.             return null;  
  56.         }  
  57.         StringBuffer firstSpell = new StringBuffer();  
  58.         char[] charOfCN = strCN.toCharArray();  
  59.         HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  
  60.         format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
  61.         format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
  62.         for (int i = 0; i < charOfCN.length; i++) {  
  63.             // 是否为中文字符  
  64.             if (charOfCN[i] > 128) {  
  65.                 String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(  
  66.                         charOfCN[i], format);  
  67.                 // 取拼音首字母  
  68.                 if (null != spellArray) {  
  69.                     firstSpell.append(spellArray[0].charAt(0));  
  70.                 }else{  
  71.                     firstSpell.append(charOfCN[i]);  
  72.                 }  
  73.             } else {  
  74.                 firstSpell.append(charOfCN[i]);  
  75.             }  
  76.         }  
  77.         return firstSpell.toString();  
  78.     }  
  79.     /** 
  80.      * 获取 汉字串拼音首字母 & 汉字串拼音 
  81.      *  
  82.      * @param strCN 
  83.      * @return 下标0:汉字串拼音首字母;下标1:汉字串拼音 
  84.      * @throws BadHanyuPinyinOutputFormatCombination 
  85.      */  
  86.     public static String[] getFirstAndHanyuPinyin(String strCN)  
  87.             throws BadHanyuPinyinOutputFormatCombination {  
  88.         if(null == strCN){  
  89.             return null;  
  90.         }  
  91.         StringBuffer firstSpell = new StringBuffer();  
  92.         StringBuffer spell = new StringBuffer();  
  93.         char[] charOfCN = strCN.toCharArray();  
  94.         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  
  95.         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
  96.         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
  97.         for (int i = 0; i < charOfCN.length; i++) {  
  98.             // 是否为中文字符  
  99.             if (charOfCN[i] > 128) {  
  100.                 String[] spellArray = PinyinHelper.toHanyuPinyinStringArray(  
  101.                         charOfCN[i], defaultFormat);  
  102.                 if (null != spellArray) {  
  103.                     firstSpell.append(spellArray[0].charAt(0));  
  104.                     spell.append(spellArray[0]);  
  105.                 }else{  
  106.                     firstSpell.append(charOfCN[i]);  
  107.                     spell.append(charOfCN[i]);  
  108.                 }  
  109.             } else {  
  110.                 firstSpell.append(charOfCN[i]);  
  111.                 spell.append(charOfCN[i]);  
  112.             }  
  113.         }  
  114.         return new String[] { firstSpell.toString(), spell.toString() };  
  115.     }  
  116.       
  117. }  



2.测试 

Java代码   收藏代码
  1. import java.util.Arrays;  
  2. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
  3.   
  4. import com.ws.util.PinyinUtils;  
  5.   
  6. public class Test {  
  7.     /** 
  8.      * @param args 
  9.      */  
  10.     public static void main(String[] args) {  
  11.         try {  
  12.             testPinyin();  
  13.         } catch (BadHanyuPinyinOutputFormatCombination e1) {  
  14.             e1.printStackTrace();  
  15.         }  
  16.     }  
  17.     static void testPinyin() throws BadHanyuPinyinOutputFormatCombination{  
  18.         String pinyin = null;  
  19.         String [] firstAndPinyin = null;  
  20.         String s = "< 中國-China-중국 >";  
  21.           
  22.         pinyin = PinyinUtils.getFirstHanyuPinyin( s);  
  23.         System.err.println("getFirstHanyuPinyin("+s+")......["+pinyin+"]");  
  24.           
  25.         pinyin = PinyinUtils.getHanyuPinyin( s);  
  26.         System.err.println("getHanyuPinyin("+s+")......["+pinyin+"]");  
  27.           
  28.         firstAndPinyin = PinyinUtils.getFirstAndHanyuPinyin( s);  
  29.         System.err.println("getFirstAndHanyuPinyin("+s+")......"+Arrays.asList(firstAndPinyin));  
  30.     }  
  31.       
  32. }  



pinyin4j.jar 下载地址http://download.csdn.net/detail/lily200825/4038514

你可能感兴趣的:(pinyin4j)