package com.example.administrator.ximengjianyu.utils; 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; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by xukai on 2017/1/6. */ public class PinYinUtils { /** * 根据指定的汉字字符串, 返回其对应的拼音 * @param string * @return */ public static String getDaxiePinyin(String string) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // 不需要音标 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 设置转换出小写字母 format.setCaseType(HanyuPinyinCaseType.UPPERCASE); char[] charArray = string.toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < charArray.length; i++) { char c = charArray[i]; // 如果是空格, 跳过当前循环 if(Character.isWhitespace(c)){ continue; } if(c >= -128 && c < 127){ // 不可能是汉字, 直接拼接 sb.append(c); }else { try { // 获取某个字符对应的拼音. 可以获取到多音字. 单 ->DAN, SHAN String s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0]; //返回字符串数字,因为可能是多音字,就取第一个读音 sb.append(s); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } } return sb.toString(); } /** * 判断是否为中文 * @param str * @return */ public static boolean isChinese(String str){ Pattern p= Pattern.compile("^[\u4e00-\u9fa5]*$"); Matcher m=p.matcher(str); if(m.matches()){ return true; }else{ return false; } } /** * 判断是否包含中文 * @param str * @return */ public static boolean isContainChinese(String str){ Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(str); if (m.find()) { return true; } return false; } /** * 判断是否为字母 * @param fstrData * @return */ public static boolean isEnglish(String fstrData){ char c = fstrData.charAt(0); if(((c>='a'&&c<='z')||(c>='A'&&c<='Z'))){ return true; }else{ return false; } } /** * 根据指定的汉字字符串, 返回其对应的拼音 * @param string * @return */ public static String getPinyin(String string) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // 不需要音标 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 设置转换出小写字母 format.setCaseType(HanyuPinyinCaseType.LOWERCASE); char[] charArray = string.toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < charArray.length; i++) { char c = charArray[i]; // 如果是空格, 跳过当前循环 if(Character.isWhitespace(c)){ continue; } if(c >= -128 && c < 127){ // 不可能是汉字, 直接拼接 sb.append(c); }else { try { // 获取某个字符对应的拼音. 可以获取到多音字. 单 ->DAN, SHAN String s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0]; //返回字符串数字,因为可能是多音字,就取第一个读音 sb.append(s); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } } return sb.toString(); } }