龄的拼音(龋的拼音)燃爆了
JPinyin是一个汉字转拼音的Java开源类库,能完成诸如汉字转拼音、简体繁体互转、判断中文、简体字、繁体字,获取拼音语调等功能,将大大方便你相关需求的开发,值得拥有。
在某些场景中,可能为了方便用户快速搜索,使用拼音首字母的方式进行检索举个例子,一个系统支持拼音首字母检索,那么输入hzlj就可以搜索出杭州龙井等商品结果,系统中提供一个字段用于存储拼音字母组合即可(呃~~,在这里我们不讨论为什么不用索引进行检索等,只是给出一个case说明)。
本文将给大家介绍一个自己曾经用过的,感觉还不错的汉字转拼音的java开源类包JPinYin本文主要包含如下几个部分的内容:1、JPinYin的基本介绍2、JPinYin的基本原理和组成3、使用JPinYin完成多个case的示例。
一、JPinYin的基本介绍JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进1.1 JPinYin的基本特性## https://github.com/qzw1210/jpinyin。
1、准确、完善的字库; Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中, JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字;2、拼音转换速度快;
经测试,转换Unicode编码从4E00-9FA5范围的20902个汉字, JPinyin耗时约100毫秒3、多拼音格式输出支持; JPinyin支持多种拼音输出格式:带音标、不带音标、数字表示音标。
以及拼音首字母输出格式;4、常见多音字识别; JPinyin支持常见多音字的识别,其中包括词组、成语、地名等;5、简繁体中文转换;6、支持添加用户自定义字典;二、JPinYin的基本原理和组成
2.1 JPinYin的基本原理JPinyin对汉字转拼音的支持,主要是通过预定的字典文件实现的。Jpinyin预定义了三个字典文件,如下图所示:
其中,pinyin.dict文件定义了汉字和对应拼音的键值对部分内容如下:〇=líng一=yī丁=dīng,zhēng丂=kǎo,qiǎo,yú七=qī丄=shàng丅=xià丆=hǎn万=wàn,mò。
丈=zhàng三=sān上=shàng,shǎng下=xià丌=qí,jī不=bù,fǒu与=yǔ,yù,yú丏=miǎn丐=gài丑=chǒu丒=chǒu专=zhuān且=qiě,jū丕=pī世=shì
丗=shì丘=qiū丙=bǐng业=yè... ...龆=tiáo龇=zī龈=yín,kěn龉=yǔ龊=chuò龋=qǔ龌=wò龍=lóng,lǒng龎=páng龏=gōng,wò龐=páng龑=yǎn
龒=lóng龓=lóng,lǒng龔=gōng龕=kān龖=dá龗=líng龘=dá龙=lóng龚=gōng龛=kān龜=guī,jūn,qiū龝=qiū龞=biē龟=guī,jūn,qiū龠=yuè龡=chuī
龢=hé龣=jiǎo龤=xié龥=yuèmulti_pinyin.dict定义了多音字、词语等,部分内容如下:阿訇=ā,hōng阿罗汉=ā,luó,hàn阿木林=ā,mù,lín阿姨=ā,yí阿谀=ē,yú
阿附=ē,fù阿胶=ē,jiāo阿弥陀佛=ē,mí,tuó,fó了解=liǎo,jiě了如指掌=liǎo,rú,zhǐ,zhǎng一目了然=yī,mù,liǎo,rán俩人=liǎ,rén你们俩=nǐ,mēn,liǎ
我们俩=wǒ,mēn,liǎ他们俩=tā,mēn,liǎ子弹=zǐ,dàn炮弹=pào,dàn弹药=dàn,yào调查=diào,chá声调=shēng,diào音乐=yīn,yuè乐曲=yuè,qǔ乐器=yuè,qì
乐谱=yuè,pǔ缝隙=fèng,xì胸脯=xiōng,pú... ...处方=chǔ,fāng扒手=pá,shǒu扒草=pá,cǎo数据=shù,jù重新=chóng,xīn无数=wú,shù成都=chéng,dū
重来=chóng,lái重复=chóng,fù重申=chóng,shēn重阳=chóng,yáng重逢=chóng,féng重沓=chóng,tà重叠=chóng,dié重霄=chóng,xiāo重唱=chóng,chàng
重洋=chóng,yáng重峦叠嶂=chóng,luán,dié,zhàng成长=chéng,zhǎngchinese.dict则定义了繁体字和简体字对应的键值对,用于繁体字和简体字的转换,部分内容如下:
臺=台萬=万與=与醜=丑專=专業=业叢=丛東=东絲=丝丟=丢兩=两嚴=严喪=丧個=个爿=丬豐=丰臨=临為=为麗=丽舉=举麼=么義=义烏=乌樂=乐... ...齒=齿齔=龀齕=龁齗=龂齟=龃齡=龄齙=龅齠=龆
齜=龇齦=龈齬=龉齪=龊齲=龋齷=龌龍=龙龔=龚龕=龛龜=龟有了上述的字典库,读取相关的字典资源文件,就可以完成繁体字到简体字、汉字到拼音的转换等功能2.2 JPinYin基本组成Jpinyin就包含如下图所示的6个Java类:。
其中,PinyinHelper.java是汉字转拼音类,其主要有如下几个功能判断一个汉字是否为多音字获取字符串对应拼音的首字母将字符串转换成带声调格式的拼音将字符串转换成相应格式的拼音将单个汉字转换为相应格式的拼音
等等ChineseHelper.java是汉字简繁体转换类,其主要有如下几个功能:将单个繁体字转换为简体字将单个简体字转换为繁体字判断某个字符是否为汉字判断字符串中是否包含中文等等PinyinFormat.java
是拼音格式类,主要提供了三种拼音格式类:WITH_TONE_MARK WITHOUT_TONEWITH_TONE_NUMBERpackage com.github.stuxuhai.jpinyin;/**
* 拼音格式类 * * @author stuxuhai (dczxxuhai@gmail.com) */publicenum PinyinFormat { WITH_TONE_MARK, WITHOUT_TONE, WITH_TONE_NUMBER;
}PinyinResource.java是资源文件加载类,主要提供对预定义的字典文件进行加载 protected staticMap getPinyinResource() {。
return getResource(newClassPathReader("/data/pinyin.dict")); } protected staticMap
> getMutilPinyinResource() {return getResource(newClassPathReader("/data/mutil_pinyin.dict")); } protected
staticMap getChineseResource() {return getResource(newClassPathReader("/data/chinese.dict"
)); }三、JPinYin的多个示例接下来,我们将使用JPinYin来完成多个示例,先引入依赖包: com.github.stuxuhai
> jpinyin 1.1.73.1 汉字简繁体互转/** * 简体字和繁体字互转
*/// 义 --> 義 System.out.println(ChineseHelper.convertToTraditionalChinese(义));// 義 --> 义 System.
out.println(ChineseHelper.convertToSimplifiedChinese(義));// 东无敌 --> 東無敵 System.out.println(ChineseHelper.convertToTraditionalChinese(
"东无敌"));// 東無敵 --> 东无敌 System.out.println(ChineseHelper.convertToSimplifiedChinese("東無敵"));3.2 判断是否为中文字符
/** * 判断是否为中文字符 */ System.out.println(ChineseHelper.isChinese(A)); // false System.out.println(ChineseHelper.isChinese(
东)); // true System.out.println(ChineseHelper.isChinese(東)); // true3.3 判断是否为繁体字/** * 是否为繁体字 */
System.out.println(ChineseHelper.isTraditionalChinese(东)); // false System.out.println(ChineseHelper.isTraditionalChinese(
東)); // true3.4 判断是否包含中文字符/** * 判断是否包含中文字符 */ System.out.println(ChineseHelper.containsChinese(
"ABC")); // false System.out.println(ChineseHelper.containsChinese("A东C")); // true System.out.println(ChineseHelper.containsChinese(
"A東C")); // true3.5 获取某个中文字符可能的发音/** * 获取某个中文字符可能的发音,如 为可以有两种发音[wèi, wéi] */String[] weiArray = PinyinHelper.convertToPinyinArray(
为);// [wèi, wéi] System.out.println(Arrays.toString(weiArray));/** * 沒有音调 */String[] weiArrayWithoutTone = PinyinHelper.convertToPinyinArray(
为, PinyinFormat.WITHOUT_TONE);//[wei] System.out.println(Arrays.toString(weiArrayWithoutTone));
/** * 有音调,使用数字表示音调 */String[] weiArrayWithoutToneNum= PinyinHelper.convertToPinyinArray(为, PinyinFormat.WITH_TONE_NUMBER);
//[wei4, wei2] System.out.println(Arrays.toString(weiArrayWithoutToneNum));3.6 获取字符串对应拼音的首字母/** * 获取字符串对应拼音的首字母
*/try {String shortPinyin = PinyinHelper.getShortPinyin("我爱杭州");//wahz System.out.println(shortPinyin);
} catch (PinyinException e) {// TODO Auto-generated catch block e.printStackTrace(); }3.7
将字符串转换成相应格式的拼音/** * 将字符串转换成相应格式的拼音 */try {String pinyinString = PinyinHelper.convertToPinyinString(
"杭州西湖", ",", PinyinFormat.WITH_TONE_MARK);//háng,zhōu,xī,hú System.out.println(pinyinString); }
catch (PinyinException e) {// TODO Auto-generated catch block e.printStackTrace(); }try {String
pinyinString = PinyinHelper.convertToPinyinString("杭州西湖", ",", PinyinFormat.WITHOUT_TONE);//hang,zhou,xi,hu
System.out.println(pinyinString); } catch (PinyinException e) {// TODO Auto-generated catch block
e.printStackTrace(); }try {String pinyinString = PinyinHelper.convertToPinyinString("杭州西湖",
",", PinyinFormat.WITH_TONE_NUMBER);//hang2,zhou1,xi1,hu2 System.out.println(pinyinString); }
catch (PinyinException e) {// TODO Auto-generated catch block e.printStackTrace(); }小结本文首先对汉字转拼音开源工具JPinYin进行了简单的介绍、并对其基本原理进行说明、最后给出多个转换的示例。
从使用上来看,JPinYin的使用还是很方便的,而且Jpinyin还预留了支持添加用户自定义字典的接口,可以让用户根据自身特点来自定义字典,从而去满足自身业务特点或者功能,如:PinyinHelper.addPinyinDict(
"user.dict"); // 添加用户自定义字典有兴趣的读者可以自己尝试一下。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186