pinyin4j.rar的使用

今天做一个rss作者库,应用到作者中文名时,需要自动将中文名转成英文名,这里推荐使用pingyin4j.rar包,此包非常强大,基本汉字都能转换成功。

不知道一些偏僻字能否转换成功。

该包支持

+ 支持同一汉字有多个发音

+ 还支持拼音的格式化输出,比如第几声之类的,

+ 同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载:

http://pinyin4j.sourceforge.net/

以下代码从网上搜索并做了一些小改动

1.基本用法:
通常情况下,只需要用到其中的PinyinHelper类中的静态方法toHanyuPinyinStringArray就可以了,比如:
String[] pinyinArray =PinyinHelper.toHanyuPinyinStringArray('单');
for(int i = 0; i < pinyinArray.length; ++i){
    System.out.println(pinyinArray[i]);
}
 就会输出:
 dan1
 chan2
 shan4
这三种发音,后面的数字代表第几声。可以看到静态方法 toHanyuPinyinStringArray返回的数据类型是一个String数组,它用来接收一个汉字的多个发音,如果 toHanyuPinyinStringArray中的参数不是汉字,那么它会返回null。

2、Pinyin4j支持拼音输出的格式化,比如,“黄”可以输出为“huang”、“huang2”、“huáng”等等,下面的代码就似是输出“huáng”的示例:

HanyuPinyinOutputFormat format= new HanyuPinyinOutputFormat();
//设置输出格式
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] pinyinArray = null;
try{
  pinyinArray = PinyinHelper.toHanyuPinyinStringArray('黄', format);

} catch (BadHanyuPinyinOutputFormatCombination e){
   e.printStackTrace();
}

for(int i = 0; i < pinyinArray.length; ++i){
   System.out.println(pinyinArray[i]);
}


下边举例子 代码应用


import net.sourceforge.pinyin4j.PinyinHelper;
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;

//汉子转拼音工具
public class PinyinUtil {
      //转换单个字符
      public static String getCharacterPinYin(char c){
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
        String [] pinyin = null;
        try{
           pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
        }
        catch(BadHanyuPinyinOutputFormatCombination e){
           e.printStackTrace();
        }
        
        // 如果c不是汉字,toHanyuPinyinStringArray会返回null
        if(pinyin == null) return null;
        // 只取一个发音,如果是多音字,仅取第一个发音
        return pinyin[0];  
      }

      //转换一个字符串
      public static String getStringPinYin(String str){
        StringBuilder sb = new StringBuilder();
        String tempPinyin = null;
        for(int i = 0; i < str.length(); ++i){
             tempPinyin =getCharacterPinYin(str.charAt(i));
             if(tempPinyin == null){
                // 如果str.charAt(i)非汉字,则保持原样
                sb.append(str.charAt(i));
             }
             else{
                sb.append(tempPinyin);
             }
        }
        return sb.toString();
      }
      
      public static void main(String [] args){
         // PinyinUtil util = new PinyinUtil();
          String str = "我的博客,hello";
          System.out.println(PinyinUtil.getStringPinYin(str));
      }
}

你可能感兴趣的:(String,rss,null,Class,import,工具)