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

 更新时间:2017年05月15日 12:30:11   作者:SummerChill  
这篇文章主要为大家详细介绍了Java汉字转成汉语拼音工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

相关文章

  • Springboot注解之@EnableAutoConfiguration详解

    Springboot注解之@EnableAutoConfiguration详解

    这篇文章主要介绍了Springboot注解之@EnableAutoConfiguration详解,@EnableAutoConfiguration是一个加载Starter目录包之外的需要Spring自动生成bean对象,本文对其进行总结,需要的朋友可以参考下
    2023-08-08
  • Spring中@DependsOn注解的使用代码实例

    Spring中@DependsOn注解的使用代码实例

    这篇文章主要介绍了Spring中@DependsOn注解的使用代码实例,Spring中@DependsOn,主要是使用在类和方法上, 作用是当前对象要依赖另外一些对象,被依赖的对象会先注册到Spring的IOC容器中,需要的朋友可以参考下
    2024-01-01
  • idea撤销git commit操作详解

    idea撤销git commit操作详解

    这篇文章主要为大家介绍了idea撤销git commit操作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • springboot整合vue实现上传下载文件

    springboot整合vue实现上传下载文件

    这篇文章主要为大家详细介绍了springboot整合vue实现上传下载文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 使用java采集京东商城区划数据示例

    使用java采集京东商城区划数据示例

    这篇文章主要介绍了java采集京东的全国区划数据示例,保存成json形式,如想转换到数据库只需反序列化为对象保存到数据库即可
    2014-03-03
  • Java集合框架超详细小结

    Java集合框架超详细小结

    Java中提供的一种容器,可以用来存储多个数据。java集合大致可以分为Set,List,Queue和Map四种体系。这篇文章主要介绍了Java集合框架超详细小结,需要的朋友可以参考下
    2021-08-08
  • java String类型对象转换为自定义类型对象的实现

    java String类型对象转换为自定义类型对象的实现

    本文主要介绍了java String类型对象转换为自定义类型对象的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java中Socket实现数据通信的示例代码

    Java中Socket实现数据通信的示例代码

    本文主要介绍了Java中Socket实现数据通信的示例代码,Socket可以建立起客户端和服务器之间的连接,实现数据的传输和交互,感兴趣的可以了解一下
    2023-09-09
  • Java并发系列之JUC中的Lock锁与synchronized同步代码块问题

    Java并发系列之JUC中的Lock锁与synchronized同步代码块问题

    这篇文章主要介绍了Java并发系列之JUC中的Lock锁与synchronized同步代码块,简单介绍了lock锁及锁的底层知识,结合案例给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Java实现abc字符串排列组合

    Java实现abc字符串排列组合

    这篇文章主要为大家详细介绍了JAVA实现abc字符串的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论