使用pinyin4j将汉字转换成拼音需要下载pinyin4j的jar包,这里使用的是pinyin4j-2.5.;下载地址:/projects/pinyin4j/files/latest/download?source=files
历史各个版本下载地址:/projects/pinyin4j/files/
package ;
import .;
import .;
import .;
import .;
import .;
import .;
/************************************************
*
* @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) {
("输出结果:");
//字符是单引号,字符串是双引号
(chineseCharToPinYin('拼', false, ""));
//多音字
(chineseCharToPinYin('乐', true, " "));
//中文字符串转换成拼音
(ChineseStringToPinYin("中文字符串转换成拼音", ""));
//有空格
(ChineseStringToPinYin("中文字符串转换成拼音", " "));
}
/**
* 单个字符转换成拼音
*
* @param chinese 中文字符
* @param isPolyphone 多音字
* @param separator 分隔符(String 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();
//设置声调格式
(HanyuPinyinToneType.WITH_TONE_MARK);
/**
* 方法参数HanyuPinyinToneType有以下常量对象:
* HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:liu2
* HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:liu
* HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:liú
*
* */
//设置特殊拼音ü的显示格式
(HanyuPinyinVCharType.WITH_U_UNICODE);
/**
* 方法参数HanyuPinyinVCharType有以下常量对象:
* HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,例如:lu:
* HanyuPinyinVCharType.WITH_V 以V表示该字符,例如:lv
* HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示
*
* */
//设置大小写格式
();
/**
* 转换后以全小写方式输出
* 转换后以全大写方式输出
*
* */
try {
//返回的数组即是该字符的拼音,如上例就是pinYin[0]=liu2,后面的数字代表声调,
//声调为5表示轻读,无声调。之所谓返回数组,是因为被判定的汉字有可能有多个读音。
//如果输入的参数不是汉字,则返回null。
String[] pinYinArray = (chinese, outputFormat);
//(concatPinYinStringArray(pinYinArray));
if (pinYinArray == null || < 1) {
return "";
}
//是否区分多音字,默认只查出多音字的第一个拼音
if (isPolyphone && separator != null) {
for (int i = 0; i < ; i++) {
(pinYinArray[i]);
//不是数组最后一个(拼音的时候)
if ( != (i + 1)) {
//多音字的拼音之间使用分割符号分割开来
(separator);
}
}
} else {
(pinYinArray[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
();
}
} else {
(chinese);
}
return ();
}
/**
* 将拼音数组转换成拼音字符串
*
* @param pinYinArray 拼音数组(含一个或多个拼音)
*
*/
private static String concatPinYinStringArray(String[] pinYinArray)
{
StringBuffer pinYinStrBuf = new StringBuffer();
if ((null != pinYinArray) && ( > 0))
{
for (int i = 0; i < ; i++)
{
(pinYinArray[i]);
// Line separator ("\n" on UNIX) 换行
((""));
}
} else {
return "";
}
("系统属性(换行符):" + (""));
String outputString = ();
return outputString;
}
/**
* 中文字符串转换成拼音
* @param chinese 中文字符串
* @param separator 分隔符
* */
@SuppressWarnings("deprecation")
public static String ChineseStringToPinYin(String chinese, String separator) {
// 创建汉语拼音处理类
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 输出设置:大小写,音标方式
();
(HanyuPinyinToneType.WITHOUT_TONE);
String pinyin = "";
try {
pinyin = (chinese, defaultFormat, separator);
} catch (BadHanyuPinyinOutputFormatCombination e) {
// TODO Auto-generated catch block
();
}
return pinyin;
}
}
输出结果:
PĪN
LÈ YUÈ
zhongwenzifuchuanzhuanhuanchengpinyin
zhong wen zi fu chuan zhuan huan cheng pin yin
作者声明:本人Rosanu对以上所有任何内容享有版权,转载请注明作者本人Rosanu及出处。向你的厚道致敬。谢谢。