【Java】【23】汉字转拼音
前言:
1,pinyin4J.jar包
2,常用方法:转为常见拼音——PinyinHelper.oHanyuPinyinStringArray(char ch)
3,HanyuPinyinOutputFormat :输出的格式
4,代码
正文:
1,jar包的maven地址为:http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2.5.0
2, 常用方法
PinyinHelper.oHanyuPinyinStringArray(char ch, HanyuPinyinOutputFormat outputFormat)
将char(必须为汉字单字)转化为拼音,如果ch为非汉字,返回null。
输入:重 输出:[zhong4, chong2],说明重字有两个读音,拼音后面的1,2,3,4 代表的是读音。
其他诸如转为 注音符号拼音 的方法,请看我参考的第一篇博客,写得挺好的
3,HanyuPinyinOutputFormat :输出的格式
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.UPPERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
(1)HanyuPinyinCaseType代表大小写
UPPERCASE:全部大写
LOWERCASE:全部小写
FIRSTUPPER:首字母大写
(2)HanyuPinyinToneType代表声调
.WITH_TONE_NUMBER:用数字表示声调,如:liu2
.WITHOUT_TONE:无声调,liu
.WITH_TONE_MARK:用声调符号表示,打不出来。。。可看第二篇参考博客
4,代码
package com.lyz.pingyin; 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.exception.BadHanyuPinyinOutputFormatCombination; /** * 汉字转化为拼音的工具类 * @author liuyazhuang * */ public class PinyinTool { HanyuPinyinOutputFormat format = null; public static enum Type { UPPERCASE, //全部大写 LOWERCASE, //全部小写 FIRSTUPPER //首字母大写 } public PinyinTool(){ format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.UPPERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); } public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination{ return toPinYin(str, "", Type.UPPERCASE); } //spera代表分割符号 public String toPinYin(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{ return toPinYin(str, spera, Type.UPPERCASE); } /** * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换 * 如: 明天 转换成 MINGTIAN * @param str:要转化的汉字 * @param spera:转化结果的分割符 * @return * @throws BadHanyuPinyinOutputFormatCombination */ public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination { if(str == null || str.trim().length()==0) return ""; if(type == Type.UPPERCASE) format.setCaseType(HanyuPinyinCaseType.UPPERCASE); else format.setCaseType(HanyuPinyinCaseType.LOWERCASE); String py = ""; String temp = ""; String[] t; for(int i=0;i<str.length();i++){ char c = str.charAt(i); if((int)c <= 128) py += c; else{ t = PinyinHelper.toHanyuPinyinStringArray(c, format); if(t == null) py += c; else{ temp = t[0]; if(type == Type.FIRSTUPPER) temp = t[0].toUpperCase().charAt(0)+temp.substring(1); py += temp+(i==str.length()-1?"":spera); } } } return py.trim(); } }
参考博客:
1,Java之——汉字转换拼音(大小写) - 冰河的专栏 - CSDN博客
https://blog.csdn.net/l1028386804/article/details/55505397
2,pinyin4j的使用手册 - 百度文库