中文转拼音 中英文首字母提取

本文介绍了一个Java工具类,用于将中文字符串转换为拼音,并提供了多种转换选项,包括处理混合文本、提取首字母等功能。


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;

public class Pinyin4jUtil {

/**
* 将中文字符串(仅中文)转为拼音
*
* @param input
* @return
* @throws BadHanyuPinyinOutputFormatCombination
*/
public static String toPinyin(String input) throws BadHanyuPinyinOutputFormatCombination {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);


StringBuffer sb = new StringBuffer();
char[] cArray = input.toCharArray();
for (char c : cArray) {
String[] array = PinyinHelper.toHanyuPinyinStringArray(c, format);
if (array.length > 0) {
sb.append(array[0]);
}
}
return sb.toString();
}

/**
* 将字符串(中文,英文,标点)转为拼音. 中文转为拼音,英文去除空格小写,标点被忽略.
*
* @param input
* @return
* @throws BadHanyuPinyinOutputFormatCombination
*/
public static String comperss(String input) throws BadHanyuPinyinOutputFormatCombination {
char[] inputChar = input.toCharArray();

StringBuffer sb = new StringBuffer();
for (char c : inputChar) {
if (checkChinese(c)) {
sb.append(toPinyin(c));
} else {
if (Character.isLetter(c)) {
sb.append(String.valueOf(c).toLowerCase());
}
}
}
return sb.toString();
}

/**
* 判断字符是否为中文
*
* @param word
* @return
*/
public static boolean checkChinese(char word) {
if ((word >= 0x4e00) && (word <= 0x9fbb))
return true;
else
return false;
}

/**
* 将单个字符转为拼音
*
* @param input
* @return
* @throws BadHanyuPinyinOutputFormatCombination
*/
public static String toPinyin(char input) throws BadHanyuPinyinOutputFormatCombination {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);

StringBuffer sb = new StringBuffer();
String[] array = PinyinHelper.toHanyuPinyinStringArray(input, format);
if (array.length > 0) {
sb.append(array[0]);
}
return sb.toString();
}

/**
* 取中文和英文首字母,数字等
*/
public static String getFirstLetter(String ChineseLanguage) {
char[] cl_chars = ChineseLanguage.trim().toCharArray();

StringBuffer hanyupinyin = new StringBuffer();
StringBuffer letter = new StringBuffer(); // 英文字符缓存
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调

for (char c : cl_chars) {
try {
String str = String.valueOf(c);
if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
if (letter.length() > 0) {
hanyupinyin.append(letter.substring(0, 1).toUpperCase());
letter.setLength(0);
}
hanyupinyin.append(PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat)[0].substring(0, 1));
} else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
if (letter.length() > 0) {
hanyupinyin.append(letter.substring(0, 1).toUpperCase());
letter.setLength(0);
}
hanyupinyin.append(c);

} else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
letter.append(str);
} else if (str.matches("[']+")) {// 如果字符是字母,取字母
if (str.matches("[']+") && letter.length() > 0) {
letter.append(str);
}
} else {// 否则不转换
if (letter.length() > 0) {
hanyupinyin.append(letter.substring(0, 1).toUpperCase());
letter.setLength(0);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
System.out.println("字符不能转成汉语拼音");
}
}
return hanyupinyin.toString();
}
}需要导入jar包 : pinyin4j-2.5.0.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值