博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pinyin4j:拼音与汉字的转换实例
阅读量:4087 次
发布时间:2019-05-25

本文共 2164 字,大约阅读时间需要 7 分钟。

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
0){ for(int i = 0 ;i
0){ for(int i = 0 ;i
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; }}

你可能感兴趣的文章
React+Redux系列教程
查看>>
react-native 自定义倒计时按钮
查看>>
19 个 JavaScript 常用的简写技术
查看>>
ES6这些就够了
查看>>
微信小程序:支付系列专辑(开发指南+精品Demo)
查看>>
iOS应用间相互跳转
查看>>
iOS开发之支付宝集成
查看>>
iOS开发 支付之银联支付集成
查看>>
iOS开发支付集成之微信支付
查看>>
浅谈JavaScript--声明提升
查看>>
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Flutter 布局控件完结篇
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>