Java中如何将中文转换为英文String

来源:互联网 发布:七天网络查分登录app 编辑:程序博客网 时间:2024/05/23 12:33

在JAVA 编程中我们经常免不了需要对中文排序,而往往我们排序的依据就是中文的首字母,当然无论依据什么排序,我们都需要将中文转换成为String

首先,我们要调用一个库 pinyin4j-2.5.0.jar

下载地址:http://sourceforge.net/projects/pinyin4j/

下载解压,里面有个pinyin4j-2.5.0.jar,使用这个库即可。

其次,使用这个库,使用的方法很简单,需要注意以下几点:

 

  1. / UPPERCASE:大写  (ZHONG)  
  2. // LOWERCASE:小写  (zhong)  
  3. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
  4.   
  5. // WITHOUT_TONE:无音标  (zhong)  
  6. // WITH_TONE_NUMBER:1-4数字表示英标  (zhong4)  
  7. // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常)  (zhòng)  
  8. format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);  
  9.   
  10. // WITH_V:用v表示ü  (nv)  
  11. // WITH_U_AND_COLON:用"u:"表示ü  (nu:)  
  12. // WITH_U_UNICODE:直接用ü (nü)  
  13. format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);  

   更加直接的说,将中文转换成为String 主要是使用下面的这个接口:

    PinyinHelper.toHanyuPinyinStringArray(input[i], format);  

  这个接口有个容错判断 如果input 如果传入的不是汉字,就不能转换成拼音,那么直接返回null,所以需要用正则表达式判断是否是中文
Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")
   
  更加具体的内容请看下面的完整代码
<pre name="code" class="java">public static String getPinYin(String inputString) {    HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();    format.setCaseType(HanyuPinyinCaseType.LOWERCASE);    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);    format.setVCharType(HanyuPinyinVCharType.WITH_V);        char[] input = inputString.trim().toCharArray();    String output = "";    try {    for (int i = 0; i < input.length; i++) {    if (Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {  //判断字符是否是中文    //toHanyuPinyinStringArray 如果传入的不是汉字,就不能转换成拼音,那么直接返回null    //由于中文有很多是多音字,所以这些字会有多个String,在这里我们默认的选择第一个作为pinyin    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);      output += temp[0];    } else {    output += Character.toString(input[i]);    }    }    } catch (BadHanyuPinyinOutputFormatCombination e) {    e.printStackTrace();//    Log.v(TAG, "BadHanyuPinyinOutputFormatCombination");    }    return output;    }    /** * 取出拼音中第一个字母,一般第一个字母的使用时比较常见的 * @param chines * @return */    public static String converterToFirstSpell(String chines) {    String pinyinName = "";    char[] nameChar = chines.toCharArray();    HanyuPinyinOutputFormat defaulFormat = new HanyuPinyinOutputFormat();    defaulFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);    defaulFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);    defaulFormat.setVCharType(HanyuPinyinVCharType.WITH_V);    for (int i = 0; i < nameChar.length; i++) {    if (nameChar[i] > 128) {    try {    pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaulFormat)[0].charAt(0);      } catch (BadHanyuPinyinOutputFormatCombination ex) {    ex.printStackTrace();    }    } else {    pinyinName += nameChar[i];    }    }    return pinyinName;    }


1 0
原创粉丝点击