汉字转换成拼音

来源:互联网 发布:从串口发送数据失败 编辑:程序博客网 时间:2024/04/29 17:33
  在项目开发中可能需要把汉字转换成拼音的功能,这个时候需要一个小框架PinYin4J.jar 这个工具可以把一个汉字转换成拼音,很小很方便,并且还可以解析多音字。下面是具体使用方法。 

第一:首先引入pinyin4j-2.5.0.jar 
第二:写工具类   
Java代码  收藏代码
  1. package test;  
  2. import net.sourceforge.pinyin4j.PinyinHelper;  
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;  
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;  
  5. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
  6. public class PinYinUtils {  
  7.     //将汉字转换成拼音--转换单个字符  
  8.     public static String[] getCharacterPinYin(char c){  
  9.         HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  
  10.         format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
  11.         String pinyin[] = null ;  
  12.         try{  
  13.             pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);  
  14.                          //注意返回的字符串数组,因为可能是多音字  
  15.         }catch(BadHanyuPinyinOutputFormatCombination e){  
  16.             e.printStackTrace();  
  17.         }  
  18.         // 如果c不是汉字,toHanyuPinyinStringArray会返回null  
  19.         if(pinyin == null)  
  20.             {  
  21.             return null;  
  22.             }  
  23.         else{  
  24.             return pinyin;  
  25.         }  
  26.     }  
  27. }  

第三步:写测试类(用junit测试框架) 
需要注意的是该测试类要求引入junit.jar文件 
Java代码  
  1. package test;  
  2. import static org.junit.Assert.*;  
  3. import org.junit.Test;  
  4. public class TestPinYin {  
  5.     @Test  
  6.     public void testGetPinYin() {  
  7.         String [] temp = PinYinUtils.getCharacterPinYin('解');  
  8.         for(int i=0; i<temp.length; i++){  
  9.             System.out.println(temp[i]);  
  10.         }  
  11.     }  
  12. }  

打印结果: 
jie 
jie 
xie 

第四步:测试多个汉字转换成拼音 
Java代码  
  1. public static void main(String[] args) {  
  2.         String name = "陈超阳";  
  3.         StringBuffer result = new StringBuffer();  
  4.         for(int i=0; i<name.length(); i++){  
  5.             result.append(PinYinUtils.getCharacterPinYin(name.charAt(i))[0]);  
  6.         }  
  7.         System.out.println(result.toString());  
  8. }  

注意:上述代码:如果一个汉字是多音字,默认取它的第一个拼音。 
打印结果:chenchaoyang 

汉字转拼音:

  String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重');

  上面这行代码就是单个汉字转拼音了,例如“重”字,该方法返回一个String类型的数组:

  "zhong4"

  "chong2"

  “重”是一个多音字,该方法的返回数组包含这个字的所有读音的拼音。每个读音最后有个数字就是音调(第一声 第二声 第三声 第四声,这个不用解释了)。

  上面是最简单的一种获取单个汉字的方式,还可以使用HanyuPinyinOutputFormat来格式化返回拼音的格式。

  [java]

  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.WITH_TONE_MARK);

  // WITH_V:用v表示ü (nv)

  // WITH_U_AND_COLON:用"u:"表示ü (nu:)

  // WITH_U_UNICODE:直接用ü (nü)

  format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);

  String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', format);

  toHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。



0 0
原创粉丝点击