pinyin4j 汉字转换为拼音 (支持多音字)
来源:互联网 发布:php json保存与读取 编辑:程序博客网 时间:2024/04/26 03:11
使用pinyin4j将汉字转换成拼音需要下载pinyin4j的jar包,这里使用的是pinyin4j-2.5.0.jar;下载地址:http://sourceforge.net/projects/pinyin4j/files/latest/download?source=files
历史各个版本下载地址:http://sourceforge.net/projects/pinyin4j/files/
package com.companyname.system.module.util;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.HanyuPinyinVCharType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;/************************************************ * * @Description pinyin4j支持:</P> * 声调格式化。例如:“刘”字的格式化后为“liu2”或“liu”或“liú” </P> * 对特殊拼音ü的的显示格式。例如“u:”或“v”或“ü” </P> * 大小写的转换。例如:“liu2”或“LIU2” * * @author Rosanu * @date 2012-10-10 20:10:00 * @version V1.0 *************************************************/public class PinYinUtil {public static void main(String[] args) {System.out.println("输出结果:");//字符是单引号,字符串是双引号System.out.println(chineseCharToPinYin('拼', false, ""));//多音字System.out.println(chineseCharToPinYin('乐', true, " "));//中文字符串转换成拼音System.out.println(ChineseStringToPinYin("中文字符串转换成拼音", ""));//有空格System.out.println(ChineseStringToPinYin("中文字符串转换成拼音", " "));}/** * 单个字符转换成拼音 * * @param chinese 中文字符 * @param isPolyphone 多音字 * @param separator 分隔符(String separator = "line.separator"; //Line separator ("\n" on UNIX) 换行) * */private static String chineseCharToPinYin(char chinese, boolean isPolyphone, String separator) { StringBuffer pinyin = new StringBuffer(); // 如果是中文 if (chinese > 128) { //创建格式化对象 HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); //设置声调格式 outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); /** * 方法参数HanyuPinyinToneType有以下常量对象: * HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:liu2 * HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:liu * HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:liú * * */ //设置特殊拼音ü的显示格式 outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); /** * 方法参数HanyuPinyinVCharType有以下常量对象: * HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,例如:lu: * HanyuPinyinVCharType.WITH_V 以V表示该字符,例如:lv * HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示 * * */ //设置大小写格式 outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); /** * HanyuPinyinCaseType.LOWERCASE 转换后以全小写方式输出 * HanyuPinyinCaseType.UPPERCASE 转换后以全大写方式输出 * * */ try { //返回的数组即是该字符的拼音,如上例就是pinYin[0]=liu2,后面的数字代表声调, //声调为5表示轻读,无声调。之所谓返回数组,是因为被判定的汉字有可能有多个读音。 //如果输入的参数不是汉字,则返回null。 String[] pinYinArray = PinyinHelper.toHanyuPinyinStringArray(chinese, outputFormat); //System.out.println(concatPinYinStringArray(pinYinArray)); if (pinYinArray == null || pinYinArray.length < 1) {return "";} //是否区分多音字,默认只查出多音字的第一个拼音 if (isPolyphone && separator != null) { for (int i = 0; i < pinYinArray.length; i++) { pinyin.append(pinYinArray[i]); //不是数组最后一个(拼音的时候) if (pinYinArray.length != (i + 1)) { //多音字的拼音之间使用分割符号分割开来 pinyin.append(separator); } } } else {pinyin.append(pinYinArray[0]);} } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { pinyin.append(chinese);} return pinyin.toString();}/** * 将拼音数组转换成拼音字符串 * * @param pinYinArray 拼音数组(含一个或多个拼音) * */private static String concatPinYinStringArray(String[] pinYinArray) { StringBuffer pinYinStrBuf = new StringBuffer(); if ((null != pinYinArray) && (pinYinArray.length > 0)) { for (int i = 0; i < pinYinArray.length; i++) { pinYinStrBuf.append(pinYinArray[i]); //line.separator Line separator ("\n" on UNIX) 换行 pinYinStrBuf.append(System.getProperty("line.separator")); } } else {return "";}System.out.println("系统属性(换行符):" + System.getProperty("line.separator")); String outputString = pinYinStrBuf.toString(); return outputString; }/** * 中文字符串转换成拼音 * @param chinese 中文字符串 * @param separator 分隔符 * */@SuppressWarnings("deprecation")public static String ChineseStringToPinYin(String chinese, String separator) { // 创建汉语拼音处理类 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 输出设置:大小写,音标方式 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); String pinyin = ""; try { pinyin = PinyinHelper.toHanyuPinyinString(chinese, defaultFormat, separator); } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } return pinyin; }}输出结果:
PĪN
LÈ YUÈ
zhongwenzifuchuanzhuanhuanchengpinyin
zhong wen zi fu chuan zhuan huan cheng pin yin
作者声明:本人Rosanu对以上所有任何内容享有版权,转载请注明作者本人Rosanu及出处。向你的厚道致敬。谢谢。
- pinyin4j 汉字转换为拼音 (支持多音字)
- Pinyin4J.jar 对汉字转为拼音,支持多音字。
- Pinyin4J.jar 对汉字转为拼音,支持多音字
- 汉字转化为拼音,支持多音字
- 汉字转换拼音(pinyin4j)
- pinyin4j汉字转拼音处理多音字的问题【重庆(zhongqing)】
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- poj 2253 Frogger
- 头文件的作用--转载。
- ipad横竖屏切换解决方案
- 偶然来作
- 夜雨,夜曲,及乱七八槽的其他
- pinyin4j 汉字转换为拼音 (支持多音字)
- Javascript 返回上一页
- 7种形式的Android Dialog使用举例
- mysql 单表大小限制
- java获取系统语言(区分简体中文和繁体中文) .
- 一些总结
- JSP基础语法之十五:EL表达式
- Android学习笔记(28)--- 涂鸦使用例子
- 总结一下 Spring的IOC、DI