汉字转换成拼音
来源:互联网 发布:从串口发送数据失败 编辑:程序博客网 时间:2024/04/29 17:33
第一:首先引入pinyin4j-2.5.0.jar
第二:写工具类
- package test;
- import net.sourceforge.pinyin4j.PinyinHelper;
- import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
- import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
- import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
- public class PinYinUtils {
- //将汉字转换成拼音--转换单个字符
- public static String[] getCharacterPinYin(char c){
- HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
- format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
- String pinyin[] = null ;
- try{
- pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
- //注意返回的字符串数组,因为可能是多音字
- }catch(BadHanyuPinyinOutputFormatCombination e){
- e.printStackTrace();
- }
- // 如果c不是汉字,toHanyuPinyinStringArray会返回null
- if(pinyin == null)
- {
- return null;
- }
- else{
- return pinyin;
- }
- }
- }
第三步:写测试类(用junit测试框架)
需要注意的是该测试类要求引入junit.jar文件
- package test;
- import static org.junit.Assert.*;
- import org.junit.Test;
- public class TestPinYin {
- @Test
- public void testGetPinYin() {
- String [] temp = PinYinUtils.getCharacterPinYin('解');
- for(int i=0; i<temp.length; i++){
- System.out.println(temp[i]);
- }
- }
- }
打印结果:
jie
jie
xie
第四步:测试多个汉字转换成拼音
- public static void main(String[] args) {
- String name = "陈超阳";
- StringBuffer result = new StringBuffer();
- for(int i=0; i<name.length(); i++){
- result.append(PinYinUtils.getCharacterPinYin(name.charAt(i))[0]);
- }
- System.out.println(result.toString());
- }
注意:上述代码:如果一个汉字是多音字,默认取它的第一个拼音。
打印结果:chenchaoyang
汉字转拼音:
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重');
上面这行代码就是单个汉字转拼音了,例如“重”字,该方法返回一个String类型的数组:
"zhong4"
"chong2"
“重”是一个多音字,该方法的返回数组包含这个字的所有读音的拼音。每个读音最后有个数字就是音调(第一声 第二声 第三声 第四声,这个不用解释了)。
上面是最简单的一种获取单个汉字的方式,还可以使用HanyuPinyinOutputFormat来格式化返回拼音的格式。
[java]
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// UPPERCASE:大写 (ZHONG)
// LOWERCASE:小写 (zhong)
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// WITHOUT_TONE:无音标 (zhong)
// WITH_TONE_NUMBER:1-4数字表示英标 (zhong4)
// WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng)
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
// WITH_V:用v表示ü (nv)
// WITH_U_AND_COLON:用"u:"表示ü (nu:)
// WITH_U_UNICODE:直接用ü (nü)
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', format);
toHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- 汉字转换成拼音
- javascript汉字转换成拼音
- java 汉字转换成拼音
- java 汉字转换成拼音
- C# 汉字转换成拼音
- javascript汉字转换成拼音
- C#汉字转换成拼音
- c#汉字转换成拼音
- Java 汉字转换成拼音
- sqlite3常用命令&语法
- 黑马程序员-简单网络编程总结
- UBUNTU开机时出现“waiting for network configuration” 问题的解决
- 分享一个设计滤波器的软件
- UFLDL学习笔记1(Sparse Autoencoder)
- 汉字转换成拼音
- hide and appear of statusbar
- Canny边缘检测算法原理及其VC实现详解(一)
- 黑马程序员---网络,tcp udp 笔记
- HDU 1008(水题)
- [Java] 四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
- MYSQL:master/slave主从复制
- 《鸟哥的私房菜》(第二版)第七章 Linux文件和目录管理 简要命令笔记
- 火狐浏览器页面显示错乱的解决方法