欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-23 19:18:34
java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.pinyinhelper;...

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("多发的发独守空房阿道夫打发第三方"));
  }
}

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