本文主要介绍Java汉字转换成拼音的pinyin4j用法详解,有需要的朋友可以参考一下。
一、工具介绍
Pin4J是Java开源类库,支持将简体中文和繁体中文转换为拼音;
1. 功能
支持同一个汉字的多种读音。
打印格式,其中也支持拼音,如什么声调、
同时支持简体中文和繁体中文转换成拼音…而且用起来也很简单。这里是它的官方网站,提供下载:
pinyin4j官方下载地址
2. 目录结构及说明
doc的api文档:pinyin4j
lib的Jar包:pinyin4j
src:pinyin 4j的源代码
changelog . txt:pinyin 4j的版本更新日志
COPYING.txt:许可证描述
readme . txt:pinyin 4j概述
3. 原理
Pin4J使用一个. txt文本文件(uicode_to_hanyu_pinyin.txt)来存储unicode编码和拼音的对应关系,通过读取配置文件来达到转换的目的。
该属性文件中存储的信息基本格式如下:89E3 (jie3,jie4,xie4) //(对应汉字“解”)89E3是汉字对应的unicode码的十六进制数,(jie3,jie4,xie4)是该汉字对应的三个读音(中文有多音字)。
说明pinyin4j支持多音字的处理。品银4j的加工过程如下:
根据String的toCharArray方法,获取每个字符(获取单词“solution”的unicode代码,实际上是35299。由于java中的char和String都是unicode编码,所以可以直接转换成int类型的编码数据35299)。然后用整数。托赫斯特林(C1)。toupper case()将其转换为十六进制数[即89E3],通过读取配置文件得到“杰”字的拼音(jie3,jie4,xie4)。那么这里有三个拼音,pinyin4j的默认值是第一个,也就是jie3[意思是读jie。
二、pinyin4J 使用
pinyin4j提供的工具类是PinyinHelper,提供静态方法。
-toHanyuPinyinString()(已过时)
- toHanyuPinyinStringArray()
pin4j中有四个辅助类:
-hanyupinyinchetype
- HanyuPinyinToneType
- HanyuPinyinVCharType
-hanyupininoutputformat
具体功能和用法见代码:
hanyupininoutputformat default format=new hanyupininoutputformat();
//控制大小写
//大写:大写(中)
//小写:小写(中)
default format . set casetype(hanyupinyincassetype。大写);
//不带声调:不带音标(中)
//with _ tone _ number: 1-4个数字代表英标(中4)
//WITH_TONE_MARK:直接使用音标(必须是WITH_U_UNICODE,否则是个例外)(zhng)
default format . settonetype(HanyuPinyinToneType。带_音_号);
//WITH_V:用V表示 (nv)
//WITH_U_AND_COLON:对 (nu:)使用“U:”
//WITH_U_UNICODE:直接使用 (n)。
default format . setvchartype(HanyuPinyinVCharType。WITH _ U _ UNICODE);
//oHanyuPinyinStringArray如果传入的字符不是汉字,无法转换成拼音,则直接返回null。
string[]pinyin=pinyin helper . tohanypyinstring array(' heavy ',default format);
for(字符串:拼音){
system . out . println(str);
}
结果:
中4
冲2
其他工具类别
获取汉语拼音的第一个字母
将字符串中的汉字转换成拼音,英文字符保持不变。
/**
*获取汉语拼音的首字母
*
* @param中国
*汉字
* @返回
*/
公共静态字符串getAlpha(字符串chines) {
string pinyin name=“”;
char[]name char=Chines . tochararray();
hanyupininoutputformat default format=new hanyupininoutputformat();
default format . set casetype(hanyupinyincassetype。大写);
default format . settonetype(HanyuPinyinToneType。不带_ TONE);
for(int I=0;i nameChar.lengthi ) {
if (nameChar[i] 128) {
尝试{
pinyin name=pinyin helper . tohanyupinyinstringarray(
nameChar[i],defaultFormat)[0]。charAt(0);
} catch(badhanyupinoutputformatcomposition e){
e . printstacktrace();
}
}否则{
pinyin name=name char[I];
}
}
返回pinyinName
}
/**
*字符串中的汉字转换为拼音,英文字符保持不变。
*
* @param输入字符串
*汉字
* @返回
*/
公共静态字符串getPingYin(字符串输入字符串)>
hanyupininoutput format=new hanyupininoutput format();
格式。seta setype(hanyupinyincancetype).小写字母
格式。settonetype(hanyupinyintontype).无色调;
格式。setvcharype(hanyupinyinvchartfype).用_ v;
输出字符串=';
if (inputString!=空输入字符串.长度()0
!空值. equals(输入字符串))& gt
char[] input=inputString.trim().toraraarray();
尝试[
for(int I=0);输入。长度:(I)>
如果(Java。郎。性格。tostring)(输入[我].匹配(
"[\ \ U4和00-\ \ u9 fa 5]"]
字符串[]temp=pinyinhelper。tohanyupinyinstring数组(
输入[我],格式;
输出=temp[0];
}其他
输出=Java。郎。性格。tostring(input[I]);
}
} catch(badhayuninputput格式组合e)}
e。printstacktrace();
}
}否则
返回' * ';
}
返回输出;
}
/**
*汉字转换为汉语拼音首字母,英文字符不变
*
* @中文参数
*汉字
* @返回拼音
*/
公共静态字符串convertertofirstspell(中文字符串)>
字符串pinyin name=';
char[] nameChar=中文。toraraarray();
hanyupininoutput format默认格式=new hanyupininoutput format();
默认格式。seta setype(hanyupinyincancetype).大写字母
默认格式。settonetype(hanyupinyintontype).无色调;
for(int I=0);我叫夏尔。长度(I)>
如果(名称char[I]128)}
尝试[
pinyinname=pinyinhelper。tohanyupinyinstring数组(
nameChar[i],默认格式[0].charat(0);
} catch(badhayuninputput格式组合e)}
e。printstacktrace();
}
}否则
pinyin name=name char[I];
}
}
返回拼音姓名;
}
更多关于Java(Java)汉字转拼音拼音4j用法请查看下面的相碰链接
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。