程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java完成漢字轉拼音

java完成漢字轉拼音

編輯:關於JAVA

java完成漢字轉拼音。本站提示廣大學習愛好者:(java完成漢字轉拼音)文章只能為提供參考,不一定能成為您想要的結果。以下是java完成漢字轉拼音正文


1、成績描寫
漢字轉化為對應的拼音或許獲得漢字拼音的首字母,這些都是在開辟中常常碰到的成績,在獲得漢字的拼音或許拼音的首字母以後,我們在推舉或許搜刮部分可以很年夜水平進步用戶的體驗,好比用戶輸出“NH”,我們便可以聯想出“你好”、“你會”、“年後”、“內在”等詞語。在Java中,pinyin4j.jar這個對象很好完成了將漢字轉化為對應的拼音,上面我們就引見下若何應用這個jar包。

2、資本下載
下載以後解壓,直接應用文件中的pinyin4j-2.5.0.jar便可。

3、供給辦法
我們可使用HanyuPinyinOutputFormat類來設置拼音的前往方法,好比設置拼音的年夜小寫、音標方法和拼音ü的顯示情勢,詳細以下圖:

直接應用PinyinHelper中的辦法來對漢字做對應的轉化,詳細有以下三種,三種後果若何本身做下測試便可:

4、編寫代碼
針對我們平凡能夠用到的功效,我做了以下的封裝,供給的功效還有詳細的完成步調參照代碼中的正文:

package com.lulei.util; 
import java.util.ArrayList; 
import java.util.List; 
 
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; 
  
public class PinYinUtil { 
  private static HanyuPinyinOutputFormat format = null; 
  static { 
    format = new HanyuPinyinOutputFormat(); 
    //拼音小寫 
    format.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
    //無音標方法;WITH_TONE_NUMBER:1-4數字表現英標;WITH_TONE_MARK:直接用音標符(必需WITH_U_UNICODE不然異常 
    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
    //用v表現ü 
    format.setVCharType(HanyuPinyinVCharType.WITH_V); 
  } 
   
  /** 
   * @param str 
   * @return 
   * @Description: 前往字符串的拼音 
   */ 
  public static String[] getCharPinYinString(String str) { 
    if (str == null || str.length() < 1) { 
      return null; 
    } 
    List<String> result = new ArrayList<String>(); 
    //對字符串中的記載逐一剖析 
    for (int i = 0; i < str.length(); i++) { 
      result = getCharPinYinString(str.charAt(i), result); 
    } 
    return result.toArray(new String[result.size()]); 
  } 
   
  /** 
   * @param c 
   * @param list 
   * @return 
   * @Description: 將字符c的拼音拼接到list中的記載中 
   */ 
  private static List<String> getCharPinYinString(char c, List<String> list) { 
    String[] strs = getCharPinYinString(c); 
    List<String> result = new ArrayList<String>(); 
    //假如解析出的拼音為空,斷定字符C能否為英文字母,假如是英文字母則添加值拼音成果中 
    if (strs == null) { 
      if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { 
        c = c <= 91 ? (char)(c + 32) : c; 
        if (list == null || list.size() == 0) { 
          result.add(c + ""); 
        } else { 
          for (String s : list) { 
            result.add(s + c); 
          } 
        } 
        return result; 
      } 
      return list; 
    } 
    //將字符C的拼音首和已存在的拼音首組分解新的記載 
    for (String str : strs) { 
      if (list == null || list.size() == 0) { 
        result.add(str); 
      } else { 
        for (String s : list) { 
          result.add(s + str); 
        } 
      } 
    } 
    return result; 
  } 
   
  /** 
   * @param c 
   * @return 
   * @Description: 前往漢字的拼音 
   */ 
  public static String[] getCharPinYinString(char c) { 
    try { 
      //前往字符C的拼音 
      return PinyinHelper.toHanyuPinyinStringArray(c, format); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return null; 
  } 
   
  /** 
   * @param str 
   * @return 
   * @Description: 前往字符串的拼音的首字母 
   */ 
  public static String[] getCharPinYinChar(String str) { 
    if (str == null || str.length() < 1) { 
      return null; 
    } 
    List<String> result = new ArrayList<String>(); 
    //對字符串中的記載逐一剖析 
    for (int i = 0; i < str.length(); i++) { 
      result = getCharPinYinChar(str.charAt(i), result); 
    } 
    return result.toArray(new String[result.size()]); 
  } 
   
  /** 
   * @param c 
   * @param list 
   * @return 
   * @Description: 將字符c的拼音首字母拼接到list中的記載中 
   */ 
  private static List<String> getCharPinYinChar(char c, List<String> list) { 
    char[] chars = getCharPinYinChar(c); 
    List<String> result = new ArrayList<String>(); 
    //假如解析出的拼音為空,斷定字符C能否為英文字母,假如是英文字母則添加值拼音成果中 
    if (chars == null) { 
      if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { 
        c = c < 91 ? (char)(c + 32) : c; 
        if (list == null || list.size() == 0) { 
          result.add(c + ""); 
        } else { 
          for (String s : list) { 
            result.add(s + c); 
          } 
        } 
        return result; 
      } 
      return list; 
    } 
    //將字符C的拼音首字母和已存在的拼音首字母組分解新的記載 
    for (char ch : chars) { 
      if (list == null || list.size() == 0) { 
        result.add(ch + ""); 
      } else { 
        for (String s : list) { 
          result.add(s + ch); 
        } 
      } 
    } 
    return result; 
  } 
   
  /** 
   * @param c 
   * @return 
   * @Description:前往漢字拼音首字母 
   */ 
  public static char[] getCharPinYinChar(char c) { 
    //字符C的拼音 
    String[] strs = getCharPinYinString(c); 
    if (strs != null) { 
      //截取拼音的首字母 
      char[] chars = new char[strs.length]; 
      for(int i = 0; i <chars.length; i++) { 
        chars[i] = strs[i].charAt(0); 
      } 
      return chars; 
    } 
    return null; 
  } 
   
  public static void main(String[] args) { 
    // TODO Auto-generated method stub  
    char c = "重慶".charAt(0); 
    String[] str = PinYinUtil.getCharPinYinString(c); 
    for(String s : str) { 
      System.out.println(s); 
    } 
     
    char[] chars = PinYinUtil.getCharPinYinChar(c); 
    for(char c1 : chars) { 
      System.out.println(c1); 
    } 
     
    str = PinYinUtil.getCharPinYinString("重慶c"); 
    for(String s : str) { 
      System.out.println(s); 
    } 
     
    str = PinYinUtil.getCharPinYinChar("重慶a"); 
    for(String s : str) { 
      System.out.println(s); 
    } 
  } 
 
} 

5、輸入成果

以上就是java完成漢字轉拼音的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved