zoukankan      html  css  js  c++  java
  • java将汉语转换为拼音工具类

    内容转载自:https://blog.csdn.net/u012965373/article/details/82625950?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase


    添加依赖:

    <!-- 汉字转为拼音 -->
    <dependency>
        <groupId>com.belerweb</groupId>
        <artifactId>pinyin4j</artifactId>
        <version>2.5.0</version>
    </dependency>
    

     工具类实现:

      1 import org.apache.logging.log4j.LogManager;
      2 import org.apache.logging.log4j.Logger;
      3 
      4 import net.sourceforge.pinyin4j.PinyinHelper;
      5 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
      6 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
      7 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
      8 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
      9 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
     10 
     11 /**
     12  * 汉字与拼音转换工具
     13  * @author Jinyy
     14  *
     15  */
     16 public class HanyuPinyinUtil {
     17     
     18     private static final Logger LOG = LogManager.getLogger(HanyuPinyinUtil.class);
     19 
     20     /**
     21      * 将文字转为汉语拼音
     22      * @param ChineseLanguage 要转成拼音的中文
     23      * @return 拼音小写
     24      */
     25     public String toHanyuPinyin(String ChineseLanguage){
     26         return toPinyinSplitWithSpecialSymbol(ChineseLanguage, "");
     27     }
     28     
     29     /**
     30      * 将汉语处理为拼音,并通过指定符号分隔
     31      * @param ChineseLanguage
     32      * @param symbol
     33      * @return
     34      */
     35     public String toPinyinSplitWithSpecialSymbol(String ChineseLanguage, String symbol){
     36         // 将汉字拆分为字符数组,通过逗号分隔
     37         char[] cl_chars = ChineseLanguage.trim().toCharArray();
     38         String hanyupinyin = "";
     39         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     40         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 输出拼音全部小写
     41         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不带声调
     42         defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
     43         try {
     44             for (int i=0; i<cl_chars.length; i++){
     45                 if (String.valueOf(cl_chars[i]).matches("[u4e00-u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音
     46                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0] + symbol;
     47                 } else {// 如果字符不是中文,则不转换
     48                     hanyupinyin += cl_chars[i];
     49                 }
     50             }
     51         } catch (BadHanyuPinyinOutputFormatCombination e) {
     52             LOG.info("字符不能转成汉语拼音");
     53         }
     54         return hanyupinyin.substring(0, hanyupinyin.length()-1);
     55     }
     56  
     57     /**
     58      * 转换拼音字符串中第一个为大写
     59      * @param ChineseLanguage
     60      * @return
     61      */
     62     public String getFirstLettersUp(String ChineseLanguage){
     63         return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE);
     64     }
     65  
     66     /**
     67      * 转换拼音字符串第一个为小写
     68      * @param ChineseLanguage
     69      * @return
     70      */
     71     public String getFirstLettersLo(String ChineseLanguage){
     72         return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE);
     73     }
     74  
     75     /**
     76      * 获取第一个位置
     77      * @param ChineseLanguage
     78      * @param caseType
     79      * @return
     80      */
     81     public String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {
     82         char[] cl_chars = ChineseLanguage.trim().toCharArray();
     83         String hanyupinyin = "";
     84         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     85         defaultFormat.setCaseType(caseType);// 输出拼音全部大写
     86         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
     87         try {
     88             for (int i = 0; i < cl_chars.length; i++) {
     89                 String str = String.valueOf(cl_chars[i]);
     90                 if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
     91                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);
     92                 } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
     93                     hanyupinyin += cl_chars[i];
     94                 } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
     95                     hanyupinyin += cl_chars[i];
     96                 } else {// 否则不转换
     97                     hanyupinyin += cl_chars[i];//如果是标点符号的话,带着
     98                 }
     99             }
    100         } catch (BadHanyuPinyinOutputFormatCombination e) {
    101             LOG.error("字符不能转成汉语拼音");
    102         }
    103         return hanyupinyin;
    104     }
    105  
    106     /**
    107      * 获取拼音字符串
    108      * @param ChineseLanguage
    109      * @return
    110      */
    111     public String getPinyinString(String ChineseLanguage){
    112         char[] cl_chars = ChineseLanguage.trim().toCharArray();
    113         String hanyupinyin = "";
    114         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
    115         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写
    116         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
    117         try {
    118             for (int i = 0; i < cl_chars.length; i++) {
    119                 String str = String.valueOf(cl_chars[i]);
    120                 if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
    121                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(
    122                             cl_chars[i], defaultFormat)[0];
    123                 } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
    124                     hanyupinyin += cl_chars[i];
    125                 } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
    126  
    127                     hanyupinyin += cl_chars[i];
    128                 } else {// 否则不转换
    129                 }
    130             }
    131         } catch (BadHanyuPinyinOutputFormatCombination e) {
    132             LOG.error("字符不能转成汉语拼音");
    133         }
    134         return hanyupinyin;
    135     }
    136     /**
    137      * 取第一个汉字的第一个字符
    138      * @Title: getFirstLetter
    139      * @return String
    140      * @throws
    141      */
    142     public String getFirstLetter(String ChineseLanguage){
    143         char[] cl_chars = ChineseLanguage.trim().toCharArray();
    144         String hanyupinyin = "";
    145         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
    146         defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写
    147         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
    148         try {
    149             String str = String.valueOf(cl_chars[0]);
    150             if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
    151                 hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(
    152                         cl_chars[0], defaultFormat)[0].substring(0, 1);;
    153             } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
    154                 hanyupinyin += cl_chars[0];
    155             } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
    156  
    157                 hanyupinyin += cl_chars[0];
    158             } else {// 否则不转换
    159  
    160             }
    161         } catch (BadHanyuPinyinOutputFormatCombination e) {
    162             LOG.error("字符不能转成汉语拼音");
    163         }
    164         return hanyupinyin;
    165     }
    166  
    167     /**
    168      * 测试程序入口
    169      * @param args
    170      */
    171     public static void main(String[] args) {
    172         HanyuPinyinUtil hanyuPinyinUtil = new HanyuPinyinUtil();
    173         System.out.println(hanyuPinyinUtil.toHanyuPinyin("测试汉语字符串"));
    174         
    175         System.out.println(hanyuPinyinUtil.toPinyinSplitWithSpecialSymbol("测试汉语字符串", ";"));
    176     }
    177 }
    View Code

    输出结果:

    ceshihanyuzifuchua
    ce;shi;han;yu;zi;fu;chuan
  • 相关阅读:
    使用Doxygen生成net帮助文档
    Mac OSX 下配置 LNMP开发环境
    vue相关网站资源收集
    AJAX 相关笔记
    toLocaleDateString()
    前端关于图片的优化
    css 水平垂直居中的方法总结
    Mac下安装Twig模版引擎的方法
    gulp基础使用总结
    js中元素操作的有关内容与对比
  • 原文地址:https://www.cnblogs.com/waiting-ying/p/12918175.html
Copyright © 2011-2022 走看看