java中文转换为拼音的pinyin4j学习笔记
来源:互联网 发布:网络服务器拓扑图标 编辑:程序博客网 时间:2024/04/29 20:13
突然想到火车票12306网站上在输入地名时,输入拼音也能提示中文名称,可见项目中将中文转换成拼音的情况还是有的,于是网上搜索了下,法相一个“pinyin4j”的java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。
看了几篇简单介绍和使用的帖子,自己也有了想亲身实现一把的冲动哈,嘿嘿以下就是我的学习和实现过程:
1. pinyin4j库的下载地址:官方下载地址 目前最新的版本是2.5.0
2. 成功下载后解压截图:
doc目录 : pinyin4j的api文档
lib目录 : pinyin4j的jar包
src目录 : pinyin4j的源代码
下面的三个txt文件就是他的更新日志、说明相关的
打开doc目录,双击index.html文件,
根据网上文章实现,我们只要关注HanyuPinyinOutputFormat PinyinHelper等我用红框画出来的几个类即可
3 HanyuPinyinCaseType、HanyupinyinToneType、HanyuPinyinVCharType的介绍
在HanyuPinyinOutputFormat类的api中,最先说明了他的三个关键属性,caseType toneType vCharType
其中:
HanyuPinyinCaseType类中包含两个常量属性:LOWERCASE 和 UPPERCASE ,顾名思义就是大小写,即转换后的汉语拼音是大写还是小写的属性设置;
HanyuPinyinToneType类中包含了三个常量属性:
WITH_TONE_NUMBER (以数字代替声调的显示格式)
WITHOUT_TONE (无声调格式)
WITH_TONE_MARK (有声调格式)
HanyuPinyinVCharType类中包含三个常量属性:(就是遇到v u 和unicode的ü 显示方式)
WITH_V v
WITH_U_UNICODE ü
WITH_U_AND_COLON u
汉子转换成拼音format格式设置就是这三个属性,当我们设置好我们想要的转换格式后,就可以开始写代码了,当然真正转换的方法是PinyinHelper类,我们可以使用其中的很多方法来完成转换,如截图
我们使用其中的toHanyuPinyinStringArray(char,outformat)方法。
4. 开始编码工作,自己动手实现下,哈哈!!!
标准的固话程序,先创建个工程,然后建个包,在创建个class。。。。。。(哈哈)
根据上文的介绍,首先创建个HanyuPinyinOutputFormat类,然后设置好三个输出格式,具体代码如下:
public class TransChineseWord {/** * 中文转换拼音方法,使用pinyin4j * @param string 带转换的字符串 * @return 拼音字符串 * @throws BadHanyuPinyinOutputFormatCombination */public static String transPinyin(String string) throws BadHanyuPinyinOutputFormatCombination{// 创建formatHanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();// 设置format为小写的格式format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 设置format为带音调的格式format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 设置format为ü的显示格式format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);// 将string转换成char数组char[] preTransChars = string.toCharArray();// 定义一个接收转换后的StringBuilder变量StringBuilder outputBuilder = new StringBuilder();// forint length = preTransChars.length;for(int i=0;i<length;i++){// 如果当前字符是中文,将转换成汉语拼音字符数组if(Character.toString(preTransChars[i]).matches("[\u4E00-\u9FA5]+")){String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(preTransChars[i], format);outputBuilder.append(pinyins[0]).append(" ");}else{// 如果不是中文,则不转换直接拼接outputBuilder.append(Character.toString(preTransChars[i]));}}return outputBuilder.toString();}public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {String testString = "使用pinyin4j类库将中文转换成汉语拼音的demo实例!";String outputString = transPinyin(testString);System.out.println(outputString);}}
右击runas运行结果显示为:
shi yong pinyin4jlei ku jiang zhong wen zhuan huan cheng han yu pin yin de demoshi li !
但是,当我把代码中的无音调改为有音调格式后
// 设置format为带音调的格式format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
运行结果为:
sh? yòng pinyin4jlèi kù jiāng zhōng wén zhu?n huàn chéng hàn y? pīn yīn de demoshí lì !
可能是我本地字体库里面缺少对应的音标字符字体吧,不管怎么说,将中文转换成汉语拼音就是这么简单,只用了解了相关的api,实现还是很简单的哈。
好了,学习笔记就这些,记录下来留着方便以后用得到的时候拿出来。
- java中文转换为拼音的pinyin4j学习笔记
- 利用Pinyin4j把中文转换为拼音
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- u-boot之u-boot-2009.11启动过程分析
- 博弈论入门小结
- 程序设计的加密设计
- struts2 下载Excel
- Web性能压力测试工具之ApacheBench(ab)详解
- java中文转换为拼音的pinyin4j学习笔记
- c++_孙鑫mfc视频02_学习
- Java EE 6核心特征:Bean Validation特性概述
- struts2 <s:>标签
- 基于 libmad 的简单 MP3 流媒体播放器的实现
- LogHelper 日志记录帮助类
- map, hash_map,unordered_map
- Linux下的硬件驱动——USB设备(上)(驱动配置部分)
- iOS问题集合