zoukankan      html  css  js  c++  java
  • 汉字转拼音工具

     1 import net.sourceforge.pinyin4j.PinyinHelper;
     2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
     3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
     4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
     5 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
     6  
     7  
     8 /**
     9  * 汉字转化为拼音的工具类
    10  *
    11  */
    12 public class PinyinTool {
    13     
    14     HanyuPinyinOutputFormat format = null;
    15     
    16     public static enum Type {
    17         UPPERCASE,              //全部大写
    18         LOWERCASE,              //全部小写
    19         FIRSTUPPER              //首字母大写
    20     }
    21  
    22     public PinyinTool(){
    23         format = new HanyuPinyinOutputFormat();
    24         format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
    25         format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    26     }
    27 
    28     public PinyinTool(HanyuPinyinCaseType cType,HanyuPinyinToneType tType){
    29         format = new HanyuPinyinOutputFormat();
    30         format.setCaseType(cType);
    31         format.setToneType(tType);
    32     }
    33     
    34     public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination{
    35         return toPinYin(str, "", Type.LOWERCASE);
    36     }
    37  
    38     public String toPinYin(String str,Type type) throws BadHanyuPinyinOutputFormatCombination{
    39         return toPinYin(str, "", type);
    40     }
    41     
    42     public String toPinYin(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{
    43         return toPinYin(str, spera, Type.LOWERCASE);
    44     }
    45  
    46     /**
    47      * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
    48      * @param str:要转化的汉字
    49      * @param spera:转化结果的分割符
    50      * @return
    51      * @throws BadHanyuPinyinOutputFormatCombination
    52      */
    53     public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {
    54         if(str == null || str.trim().length()==0)
    55             return "";
    56         if(type == Type.UPPERCASE)
    57             format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
    58         else
    59             format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
    60  
    61         String py = "";
    62         String temp = "";
    63         String[] t;
    64         for(int i=0;i<str.length();i++){
    65             char c = str.charAt(i);
    66             if((int)c <= 128)
    67                 py += c;
    68             else{
    69                 t = PinyinHelper.toHanyuPinyinStringArray(c, format);
    70                 if(t == null)
    71                     py += c;
    72                 else{
    73                     temp = t[0];
    74                     if(type == Type.FIRSTUPPER)
    75                         temp = t[0].toUpperCase().charAt(0)+temp.substring(1);
    76                     py += temp+(i==str.length()-1?"":spera);
    77                 }
    78             }
    79         }
    80         return py.trim();
    81     }
    82     
    83     public static void main(String[] args) {
    84         try {
    85             System.out.println(new PinyinTool().toPinYin("中共中央"));
    86         } catch (BadHanyuPinyinOutputFormatCombination e) {
    87             // TODO Auto-generated catch block
    88             e.printStackTrace();
    89         }
    90     }
    91     
    92 }
    PinyinTool.java

    gradle引入:

    compile 'com.belerweb:pinyin4j:2.5.0'

    maven引入:<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

    jar下载地址:http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2.5.0

      1 import net.sourceforge.pinyin4j.PinyinHelper;
      2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
      3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
      4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
      5 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
      6 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
      7 
      8 public class HanyuPinyinHelper {
      9 
     10     /** 
     11      * 将文字转为汉语拼音
     12      * @param chineselanguage 要转成拼音的中文
     13      */
     14     public String toHanyuPinyin(String ChineseLanguage){
     15         char[] cl_chars = ChineseLanguage.trim().toCharArray();
     16         String hanyupinyin = "";
     17         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     18         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写
     19         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
     20         defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
     21         try {
     22             for (int i=0; i<cl_chars.length; i++){
     23                 if (String.valueOf(cl_chars[i]).matches("[u4e00-u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音
     24                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];
     25                 } else {// 如果字符不是中文,则不转换
     26                     hanyupinyin += cl_chars[i];
     27                 }
     28             }
     29         } catch (BadHanyuPinyinOutputFormatCombination e) {
     30             System.out.println("字符不能转成汉语拼音");
     31         }
     32         return hanyupinyin;
     33     }
     34     
     35     public static String getFirstLettersUp(String ChineseLanguage){
     36         return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE);
     37     }
     38     
     39     public static String getFirstLettersLo(String ChineseLanguage){
     40         return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE);
     41     }
     42     
     43     public static String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {
     44         char[] cl_chars = ChineseLanguage.trim().toCharArray();
     45         String hanyupinyin = "";
     46         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     47         defaultFormat.setCaseType(caseType);// 输出拼音全部大写
     48         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
     49         try {
     50             for (int i = 0; i < cl_chars.length; i++) {
     51                 String str = String.valueOf(cl_chars[i]);
     52                 if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
     53                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);
     54                 } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
     55                     hanyupinyin += cl_chars[i];
     56                 } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
     57                     hanyupinyin += cl_chars[i];
     58                 } else {// 否则不转换
     59                     hanyupinyin += cl_chars[i];//如果是标点符号的话,带着
     60                 }
     61             }
     62         } catch (BadHanyuPinyinOutputFormatCombination e) {
     63             System.out.println("字符不能转成汉语拼音");
     64         }
     65         return hanyupinyin;
     66     }
     67     
     68     public static String getPinyinString(String ChineseLanguage){
     69         char[] cl_chars = ChineseLanguage.trim().toCharArray();
     70         String hanyupinyin = "";
     71         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     72         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写
     73         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
     74         try {
     75             for (int i = 0; i < cl_chars.length; i++) {
     76                 String str = String.valueOf(cl_chars[i]);
     77                 if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
     78                     hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(
     79                             cl_chars[i], defaultFormat)[0];
     80                 } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
     81                     hanyupinyin += cl_chars[i];
     82                 } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
     83 
     84                     hanyupinyin += cl_chars[i];
     85                 } else {// 否则不转换
     86                 }
     87             }
     88         } catch (BadHanyuPinyinOutputFormatCombination e) {
     89             System.out.println("字符不能转成汉语拼音");
     90         }
     91         return hanyupinyin;
     92     }
     93     /**
     94      * 取第一个汉字的第一个字符
     95     * @Title: getFirstLetter 
     96     * @Description: TODO 
     97     * @return String   
     98     * @throws
     99      */
    100     public static String getFirstLetter(String ChineseLanguage){
    101         char[] cl_chars = ChineseLanguage.trim().toCharArray();
    102         String hanyupinyin = "";
    103         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
    104         defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写
    105         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
    106         try {
    107             String str = String.valueOf(cl_chars[0]);
    108             if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
    109                 hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(
    110                 cl_chars[0], defaultFormat)[0].substring(0, 1);;
    111             } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
    112                 hanyupinyin += cl_chars[0];
    113             } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
    114 
    115                 hanyupinyin += cl_chars[0];
    116             } else {// 否则不转换
    117 
    118             }
    119         } catch (BadHanyuPinyinOutputFormatCombination e) {
    120             System.out.println("字符不能转成汉语拼音");
    121         }
    122         return hanyupinyin;
    123     }
    124     
    125     public static void main(String[] args) {
    126         HanyuPinyinHelper hanyuPinyinHelper = new HanyuPinyinHelper() ;
    127 
    128     }
    129 }
  • 相关阅读:
    larbin结构分析
    《钱不要存银行》OneNote
    全局变量、extern/static/const区别与联系
    GIS网址,转自别处
    MSDN无法显示页面的解决
    人生没有奇迹
    开源GIS系统
    推荐:GDAL学习资源
    中国农科院资源区划所MODIS的遥感信息地面接收站
    泡沫产生的特点
  • 原文地址:https://www.cnblogs.com/liangblog/p/9790563.html
Copyright © 2011-2022 走看看