分享

使用pinyin4j将中文转换为汉语拼音

 跃来跃去 2009-02-16
前言:以前师傅跟我说~如果别人有写好的现成的东西就不要自己瞎琢磨写了,除非是有特殊的需要,要不很难写的比别人的好。别人的是经过很多人验证过的,必然能适应大众的需要,你自己写一个又耽误时间又不一定效率高。现在看确实是。之前自己找了半天的如果将中文转换为汉语拼音的现成的工具类~到头来还是直接用pinyin4j来的方便。
pinyin4j官方网站:http://pinyin4j./
直接去下载最新的jar包在项目中引用就可以使用了。下面放出一个写好的例子。将中文转换为汉语拼音。生僻的字基本也没问题,很好用。
 
 
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;
/**
 * 使用pinyin4j将中文转换为汉语拼音
 * @author hanxiaoyue
 */
public class CnToPinYin {
  
 public static String getPinYinStr(String cnstr) {
  StringBuilder sb = new StringBuilder();
  HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat();
  //返回的字符串中去除音调标记
  PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  //发音“驴(lu->lv)”的那个韵母用v表示
  PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V);
  for(int i = 0; i < cnstr.length(); i++) {
   char c = cnstr.charAt(i);
   if(c <= 255) {
    sb.append(c);
   } else {
    String pinyin = null;
    try {
     String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c,PINYIN_FORMAT);
     pinyin = pinyinArray[0];
    } catch (BadHanyuPinyinOutputFormatCombination e) {
     e.getMessage();
    } catch (NullPointerException e) {
     // 如果是日文,可能抛出该异常
    }
    if (pinyin != null) {
     sb.append(pinyin);
    }
   }
  }
  //System.out.println(sb.toString()); 
  return sb.toString();
 }
 
   public static void main(String[] args) {
    String cnstr = "";
    StringBuilder sb = new StringBuilder();
    HanyuPinyinOutputFormat PINYIN_FORMAT = new HanyuPinyinOutputFormat();
    PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V);
    for (int i = 0; i < cnstr.length(); i++) {
     char c = cnstr.charAt(i);
     if (c <= 255) {
      sb.append(c);
     } else {
      String pinyin = null;
      try {
       String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c,PINYIN_FORMAT);
       pinyin = pinyinArray[0];
      } catch (BadHanyuPinyinOutputFormatCombination e) {
       e.getMessage();
      } catch (NullPointerException e) {
     // 如果是日文,可能抛出该异常
      }
      if (pinyin != null) {
       sb.append(pinyin);
      }
     }
    }
    System.out.println(sb.toString());
   }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多