Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。


官网: http://pinyin4j.sourceforge.net/

有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音“caomengde”各字的首字母。但是怎样才能将“曹孟德”翻译成“caomengde”呢?很简单的办法就是建立一个大的对照表(比如用关联容器Map),比如<”曹”,”cao”>,<” 孟”,”meng”>,<” 德”,”de”>…但这样的做法,需要维护好一个比较大的对照表,同时一个汉字可能有多个发音,也就是说Map这样的容器时不行的,因为其<key,value>必须是一一对应的。在C++中可以用STL里面的multimap来解决这个问题,但Java中没有类似multimap这样的东西,除非自己实现一个。

Pinyin4j就是为了解决类似这样的问题的。它是sourceforge.net上的一个开源项目,功能非常强大:

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

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

+ 同时支持简体中文、繁体中文转换为拼音
………

参考文字:
http://blog.csdn.net/pathuang68/article/details/6692882


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;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class Pinyin4jDemo1 {public static void main(String[] args) {System.out.println( covertCnNameToPinyin("2222燕22ww"));System.out.println( covertCnNameToPinyin("燕燕燕燕燕燕燕燕","?"));System.out.println(covertCnStringToPinyin("2222燕22ww燕燕**燕燕"));}/*** 转换字符串中汉字为拼音,除汉字外的原样输出* @param cnName*/public static String covertCnNameToPinyin(String cnName){HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);String ret="";if(cnName != null && cnName.length()>0){for(int i = 0 ;i<cnName.length();i++){String[] pinyinArray = null;try{char idxcnNameChar = cnName.charAt(i);pinyinArray = PinyinHelper.toHanyuPinyinStringArray(idxcnNameChar, outputFormat);if(pinyinArray == null){pinyinArray = new String[]{String.valueOf(idxcnNameChar)};String outputString = concatPinyinStringArray(pinyinArray);ret = ret + outputString;}else{String outputString = concatPinyinStringArray(pinyinArray);if(i==0)ret = outputString+" ";else ret = ret + outputString;}} catch (BadHanyuPinyinOutputFormatCombination e1){e1.printStackTrace();}         }} return ret; }/*** 转换字符串中汉字为拼音,除汉字外的原样输出,可添加分隔符* @param cnName*/public static String covertCnNameToPinyin(String cnName,String delimiter){HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);String ret="";if(cnName != null && cnName.length()>0){for(int i = 0 ;i<cnName.length();i++){String[] pinyinArray = null;try{char idxcnNameChar = cnName.charAt(i);pinyinArray = PinyinHelper.toHanyuPinyinStringArray(idxcnNameChar, outputFormat);if(pinyinArray == null){pinyinArray = new String[]{String.valueOf(idxcnNameChar)};String outputString = concatPinyinStringArray(pinyinArray);ret = ret + outputString;}else{String outputString = concatPinyinStringArray(pinyinArray);if(i==0)ret = outputString+delimiter;else ret = ret + outputString;}} catch (BadHanyuPinyinOutputFormatCombination e1){e1.printStackTrace();}}}return ret;}/*** 转换汉字为拼音,非汉字的字符清除* @param cnName*/public static String covertCnStringToPinyin(String cnName){HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);String ret="";if(cnName != null && cnName.length()>0){for(int i = 0 ;i<cnName.length();i++){String[] pinyinArray = null;try{pinyinArray = PinyinHelper.toHanyuPinyinStringArray(cnName.charAt(i), outputFormat);} catch (BadHanyuPinyinOutputFormatCombination e1){e1.printStackTrace();}String outputString = concatPinyinStringArray(pinyinArray);ret = ret + outputString;}}return ret;}@SuppressWarnings("unused")private static String concatPinyinStringArray(String[] pinyinArray){StringBuffer pinyinStrBuf = new StringBuffer();if ((null != pinyinArray) && (pinyinArray.length > 0)){for (int i = 0; i < pinyinArray.length; i++){pinyinStrBuf.append(pinyinArray[i]);break;// pinyinStrBuf.append(System.getProperty("line.separator"));}}String outputString = pinyinStrBuf.toString();return outputString;}
}

pinyin4j:拼音与汉字的转换实例相关推荐

  1. VB 汉字字符串转换成拼音

    以下这个函数可以将一个汉字字符串转换成拼音 Private Function Getpy(Txt) Dim d, TmpTxt Dim wzcode, i, TmpWZ, a, b, ii Set d ...

  2. java中汉字自动转换成拼音

    刚刚做完这样一个功能: 这是页面上的一小部分,主要是给选择的课程添加英文名称(约定是课程拼音的首字母组合),以方便后面其他操作.这个文本框实现起来还是需要不少控制的,需要异步查询.异步添加.需要js控 ...

  3. java 拼音转汉字_Java通过pinyin4j实现汉字转拼音

    package com.zxy.timecard.utils; import net.sourceforge.pinyin4j.PinyinHelper; /** * 拼音工具类 * @author ...

  4. 探索PinYin4j.jar将汉字转换为拼音的基本用法

    将汉字转换为拼音在Android开发中是个很常见的问题.例如:在android手机应用开发中,要查询联系人的姓名,通常都是用拼音进行查询的. Pinyin4j是一个功能强悍的汉语拼音工具包,是sour ...

  5. 如何实现拼音与汉字的互相转换

    如何实现拼音与汉字的互相转换 发表于2个月前(2016-02-16 15:01)   阅读(58) | 评论(0) 6人收藏此文章, 我要收藏 赞0 4月23日,武汉源创会火热报名中,期待您的参与&g ...

  6. java实现汉字文字转换拼音(全拼和简拼)工具包

    java实现汉字文字转换拼音(全拼和简拼)工具包 话不多说,直接上代码,调用即可 /** * 得到 全拼 * @param str * @return */public static String g ...

  7. 汉字拼音计算机,拼音_汉字计算机自动转换系统

    拼音_汉字计算机自动转换系统 夕 年一 月 计 算 机 学 报 第 ! 期 拼音汉 字计算机自动转换系统 凌潘 云杨长 生江大浙学计算机#系 . . % & ( )丫 ) +, ( . %(/ ...

  8. 汉字文章转换拼音的好工具 pinyinConvert.v20120709

    汉字文章转换拼音的好工具 pinyinConvert.v20120709 ..适合于对汉字不太熟悉的人员,如小孩子,外国人,外族人等. ---------------原文------------ 分析 ...

  9. solr入门之拼音加汉字方式的搜索建议自动补全的不高效实现

    今天思考实现了下字符加汉字的搜索建议的 实现--思想主要还是昨天的思想,不过这个方法使用的是匹配查询 ,查询速度可能不太理想 /*** * @描述:用于完成拼音加汉字 组合情况的搜索建议 ---尽量少 ...

最新文章

  1. boost::sort模块实现使用不区分大小写的字符串键对结构进行排序的示例
  2. C++ 生成洛伦兹的蝴蝶
  3. 《MySQL——索引笔记》
  4. 如何利用DTS数据同步功能,快速创建数据同步作业
  5. java listview用法_Java ListView.setMultiChoiceModeListener方法代码示例
  6. H7-TOOL | 以太网 - 动态IP(DHCP)功能测试
  7. xml 导入SQL Server 2005
  8. Linux命令解释之sudo
  9. IT人士十大不良饮食习惯及改进建议
  10. 艾宾浩斯遗忘曲线复习计划表Excel下载
  11. linux终端快捷键(持续更新)
  12. 多媒体计算机辅助英语教学,多媒体计算机辅助英语教学初探
  13. HDU - 2567 寻梦
  14. Mac Mounty挂载NTFS硬盘报错
  15. 那些你可能不知道的微信奇技淫巧
  16. 微信语音转文字的体验报告
  17. Https证书浏览器红色警告解决
  18. 推荐六款图片素材网站
  19. mysql下镜像安装教程_mysql的下载和安装详细教程(windows)
  20. 知乎里怎么看个人简介_如何做一份优秀的简历?

热门文章

  1. 在痛苦的日子里笑出声来
  2. 渗透测试流程(基础理论)
  3. 【Mac】MAC 终端美化教程(来个全套)
  4. Check list of writing
  5. iphonex 序列号_iPhoneX怎么看序列号?苹果iPhoneX查看序列号的三种方法
  6. 计算机相关缩略语,计算机缩略语精选
  7. 完全弹性碰撞公式推导
  8. Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门
  9. 技术太多学不过来?教你如何越学越带劲
  10. 过年表情包 || 一个月后就能用啦