首页 > 编程 > Java > 正文

Java汉字转成汉语拼音工具类

2019-11-26 12:17:43
字体:
来源:转载
供稿:网友

Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包.

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 HanyuPinyinHelper {  /**    * 将文字转为汉语拼音   * @param chineselanguage 要转成拼音的中文   */  public String toHanyuPinyin(String ChineseLanguage){    char[] cl_chars = ChineseLanguage.trim().toCharArray();    String hanyupinyin = "";    HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();    defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写    defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调    defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;    try {      for (int i=0; i<cl_chars.length; i++){        if (String.valueOf(cl_chars[i]).matches("[/u4e00-/u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音          hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];        } else {// 如果字符不是中文,则不转换          hanyupinyin += cl_chars[i];        }      }    } catch (BadHanyuPinyinOutputFormatCombination e) {      System.out.println("字符不能转成汉语拼音");    }    return hanyupinyin;  }    public static String getFirstLettersUp(String ChineseLanguage){    return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE);  }    public static String getFirstLettersLo(String ChineseLanguage){    return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE);  }    public static String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {    char[] cl_chars = ChineseLanguage.trim().toCharArray();    String hanyupinyin = "";    HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();    defaultFormat.setCaseType(caseType);// 输出拼音全部大写    defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调    try {      for (int i = 0; i < cl_chars.length; i++) {        String str = String.valueOf(cl_chars[i]);        if (str.matches("[/u4e00-/u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母          hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);        } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字          hanyupinyin += cl_chars[i];        } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母          hanyupinyin += cl_chars[i];        } else {// 否则不转换          hanyupinyin += cl_chars[i];//如果是标点符号的话,带着        }      }    } catch (BadHanyuPinyinOutputFormatCombination e) {      System.out.println("字符不能转成汉语拼音");    }    return hanyupinyin;  }    public static String getPinyinString(String ChineseLanguage){    char[] cl_chars = ChineseLanguage.trim().toCharArray();    String hanyupinyin = "";    HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();    defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写    defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调    try {      for (int i = 0; i < cl_chars.length; i++) {        String str = String.valueOf(cl_chars[i]);        if (str.matches("[/u4e00-/u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母          hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(              cl_chars[i], defaultFormat)[0];        } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字          hanyupinyin += cl_chars[i];        } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母          hanyupinyin += cl_chars[i];        } else {// 否则不转换        }      }    } catch (BadHanyuPinyinOutputFormatCombination e) {      System.out.println("字符不能转成汉语拼音");    }    return hanyupinyin;  }  /**   * 取第一个汉字的第一个字符  * @Title: getFirstLetter   * @Description: TODO   * @return String    * @throws   */  public static String getFirstLetter(String ChineseLanguage){    char[] cl_chars = ChineseLanguage.trim().toCharArray();    String hanyupinyin = "";    HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();    defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写    defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调    try {      String str = String.valueOf(cl_chars[0]);      if (str.matches("[/u4e00-/u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母        hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(        cl_chars[0], defaultFormat)[0].substring(0, 1);;      } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字        hanyupinyin += cl_chars[0];      } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母        hanyupinyin += cl_chars[0];      } else {// 否则不转换      }    } catch (BadHanyuPinyinOutputFormatCombination e) {      System.out.println("字符不能转成汉语拼音");    }    return hanyupinyin;  }    public static void main(String[] args) {    HanyuPinyinHelper hanyuPinyinHelper = new HanyuPinyinHelper() ;    System.out.println(hanyuPinyinHelper.toHanyuPinyin("多发的发独守空房阿道夫打发第三方"));  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表