jar包
jar包下载链接:https://gitee.com/study_38/status-bar-lib-s/blob/master/pinyin4j-2.5.0.jar
将jar包放在app下的libs中,右键Add As Library 添加依赖。
主要的类及方法
PinyinHelper 提供了汉字转拼音的主要方法
HanyuPinyinOutputFormat 定义如何输出拼音,
HanyuPinyinCaseType 提供了拼音输出的样式
- LOWERCASE:输出小写
- UPPERCASE:输出大写
HanyuPinyinToneType 输出音标的设置
- WITH_TONE_MARK:直接用音标符(必须设置WITH_U_UNICODE,否则会抛出异常),
- WITH_TONE_NUMBER:1-4数字表示音标,
- WITHOUT_TONE:没有音标
HanyuPinyinVCharType 需要处理特殊音标ü时设置
- WITH_V:用v表示ü
- WITH_U_AND_COLON:用"u:"表示ü
- WITH_U_UNICODE:直接用ü
HanziToPinyinUtil
可以根据以上配置,结合自己的实际需求,自行配置一下
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;
public class HanziToPinyinUtil {
/**
*
* @param str 汉字字符串
* @param separator 拼音分隔符
* @return 拼音String
*/
public static String hanziToPinyin(String str, String separator) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
//
format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
char[] chars = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (char mChar : chars) {
try {
String hanziString = Character.toString(mChar);
//得到单个汉字
if(hanziString.matches("[\\u4e00-\\u9fa5]")){
//判断是否是汉字
String[] cStrFormatHY = PinyinHelper.toHanyuPinyinStringArray(mChar, format);
//得到此汉字的所有读音,如果是多音字(例如 “中”),其结果就是['zhōng','zhòng']
String oneHanZiPinYin = cStrFormatHY[0];//直接取一个拼音为汉字的拼音,例如zhōng,此处如果有需要,自己改一下就行
sb.append(oneHanZiPinYin);
} else {
//不是汉字,原样输出
sb.append(hanziString);
}
//输出分隔符
sb.append(separator);
} catch (Exception e) {
e.printStackTrace();
}
}
return sb.toString();
}
测试
String s1 = "世上无难事,只怕有心人。 驴子";
Log.d(TAG, "汉字 = " + s1);
log:汉字 = 世上无难事,只怕有心人。驴子
String pinyin = HanziToPinyinUtil.hanziToPinyin(s1, " ");
Log.d(TAG, "拼音 = " + pinyin);
log:拼音 = shì shàng wú nán shì , zhĭ pà yŏu xīn rén 。lǘ zi
验证可行!