您的位置:首页 > 其它

使用PinYin4J汉字转拼音

2013-01-28 22:57 417 查看
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;

/**
* 汉字转拼音,英文字符不变
* @version 1.0
*
*/
public class PinYinToolkit {

/**
* 汉字转换汉语拼音首字母,英文字符不变
* 例如:北京--> bj
* @param chinese 汉字
* @return String
*/
public static String cn2FirstSpell(String chinese){
StringBuilder pinyin = new StringBuilder();
char[] nameChar = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for(int i = 0; i < nameChar.length;i++){
if(nameChar[i] > 128){
try {
String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
if(py != null){
pinyin.append(py[0].charAt(0));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyin.append(nameChar[i]);
}
}
return pinyin.toString();
}

/**
* 汉字转换汉语拼音,英文字符不变
* 例如:北京--> beijing
* @param chinese 汉字
* @return String
*/
public static String cn2Spell(String chinese){
StringBuilder pinyin = new StringBuilder();
char[] nameChar = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for(int i = 0; i < nameChar.length;i++){
if(nameChar[i] > 128){
try {
String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
if(py != null){
pinyin.append(py[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyin.append(nameChar[i]);
}
}
return pinyin.toString();
}

/**
* 拼音转换汉语拼音,拼音首字母大写,英文字符不变
* 例如:北京--> BeiJing
* @param chinese 汉字
* @return String
*/
public static String cn2SpellFirstUpperCase(String chinese){
StringBuilder pinyin = new StringBuilder();
char[] nameChar = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for(int i = 0; i < nameChar.length;i++){
if(nameChar[i] > 128){
try {
String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
if(py != null){
pinyin.append(py[0].substring(0, 1).toUpperCase() + py[0].substring(1));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyin.append(nameChar[i]);
}
}
return pinyin.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: