pinyin4J一款非常好用的漢字和拼音轉換的插件

       給大家介紹一款非常好用的漢字轉拼音,進行用拼音檢索相關數據的時候比較方便,就是pinyin4j插件,在eclipse裏如果是maven項目,直接導入相關約束,然後導入工具類,隨時根據需求調用相關方法即可,在下面工具類代碼裏可以找到相應方法的具體代碼,而且相關jar包可以在網上搜索pinyin4j進行下載

約束:

<!—https://mvnrepository.com/artifact/com.belerweb/pinyin4j-->

       <dependency>

          <groupId>com.belerweb</groupId>

           <artifactId>pinyin4j</artifactId>

          <version>2.5.0</version>

       </dependency

工具類代碼:

import java.util.Arrays;

 

importnet.sourceforge.pinyin4j.PinyinHelper;

importnet.sourceforge.pinyin4j.format.HanyuPinyinCaseType;

import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;

importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;

importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

 

public class PinYin4jUtils {

      /**

       * 將字符串轉換成拼音數組

       *

       * @param src

       * @return

       */

      publicstatic String[] stringToPinyin(String src) {

           returnstringToPinyin(src, false, null);

      }

 

      /**

       * 將字符串轉換成拼音數組

       *

       * @param src

       * @return

       */

      publicstatic String[] stringToPinyin(String src, String separator) {

 

           returnstringToPinyin(src, true, separator);

      }

 

      /**

       * 將字符串轉換成拼音數組

       *

       * @param src

       * @param isPolyphone

       *           是否查出多音字的所有拼音

       * @param separator

       *           多音字拼音之間的分隔符

       * @return

       */

      publicstatic String[] stringToPinyin(String src, boolean isPolyphone,

                 String separator) {

           //判斷字符串是否爲空

           if("".equals(src) || null == src) {

                 returnnull;

           }

           char[]srcChar = src.toCharArray();

           intsrcCount = srcChar.length;

           String[]srcStr = new String[srcCount];

 

           for(int i = 0; i < srcCount; i++) {

                 srcStr[i]= charToPinyin(srcChar[i], isPolyphone, separator);

           }

           returnsrcStr;

      }

 

      /**

       * 將單個字符轉換成拼音

       *

       * @param src

       * @return

       */

      publicstatic String charToPinyin(char src, boolean isPolyphone,

                 String separator) {

           //創建漢語拼音處理類

           HanyuPinyinOutputFormatdefaultFormat = new HanyuPinyinOutputFormat();

           // 輸出設置,大小寫,音標方式

           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

 

           StringBuffer tempPinying = newStringBuffer();

 

           //如果是中文

           if(src > 128) {

                 try{

                      //轉換得出結果

                      String[]strs = PinyinHelper.toHanyuPinyinStringArray(src,

                                  defaultFormat);

 

                      //是否查出多音字,默認是查出多音字的第一個字符

                      if(isPolyphone && null != separator) {

                            for(int i = 0; i < strs.length; i++) {

                                  tempPinying.append(strs[i]);

                                  if(strs.length != (i + 1)) {

                                       //多音字之間用特殊符號間隔起來

                                       tempPinying.append(separator);

                                  }

                            }

                      }else {

                            tempPinying.append(strs[0]);

                      }

 

                 }catch (BadHanyuPinyinOutputFormatCombination e) {

                      e.printStackTrace();

                 }

           }else {

                 tempPinying.append(src);

           }

 

           returntempPinying.toString();

 

      }

 

      publicstatic String hanziToPinyin(String hanzi) {

           returnhanziToPinyin(hanzi, " ");

      }

 

      /**

       * 將漢字轉換成拼音

       *

       * @param hanzi

       * @param separator

       * @return

       */

      publicstatic String hanziToPinyin(String hanzi, String separator) {

 

           //創建漢語拼音處理類

           HanyuPinyinOutputFormatdefaultFormat = new HanyuPinyinOutputFormat();

           // 輸出設置,大小寫,音標方式

           defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);

           defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

 

           StringpinyingStr = "";

           try{

                 pinyingStr= PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat,

                            separator);

           }catch (BadHanyuPinyinOutputFormatCombination e) {

                 // TODO Auto-generated catchblock

                 e.printStackTrace();

           }

           returnpinyingStr;

      }

 

      /**

       * 將字符串數組轉換成字符串

       *

       * @param str

       * @param separator

       *           各個字符串之間的分隔符

       * @return

       */

      publicstatic String stringArrayToString(String[] str, String separator) {

           StringBuffersb = new StringBuffer();

           for(int i = 0; i < str.length; i++) {

                 sb.append(str[i]);

                 if(str.length != (i + 1)) {

                      sb.append(separator);

                 }

           }

           returnsb.toString();

      }

 

      /**

       * 簡單的將各個字符數組之間連接起來

       *

       * @param str

       * @return

       */

      publicstatic String stringArrayToString(String[] str) {

           returnstringArrayToString(str, "");

      }

 

      /**

       * 將字符數組轉換成字符串

       *

       * @param str

       * @param separator

       *           各個字符串之間的分隔符

       * @return

       */

      publicstatic String charArrayToString(char[] ch, String separator) {

           StringBuffersb = new StringBuffer();

           for(int i = 0; i < ch.length; i++) {

                 sb.append(ch[i]);

                 if(ch.length != (i + 1)) {

                      sb.append(separator);

                 }

           }

           returnsb.toString();

      }

 

      /**

       * 將字符數組轉換成字符串

       *

       * @param str

       * @return

       */

      publicstatic String charArrayToString(char[] ch) {

           returncharArrayToString(ch, " ");

      }

 

      /**

       * 取漢字的首字母

       *

       * @param src

       * @param isCapital

       *           是否是大寫

       * @return

       */

      publicstatic char[] getHeadByChar(char src, boolean isCapital) {

           //如果不是漢字直接返回

           if(src <= 128) {

                 returnnew char[] { src };

           }

           //獲取所有的拼音

           String[]pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);

 

           //創建返回對象

           intpolyphoneSize = pinyingStr.length;

           char[]headChars = new char[polyphoneSize];

           inti = 0;

           //截取首字符

           for(String s : pinyingStr) {

                 charheadChar = s.charAt(0);

                 //首字母是否大寫,默認是小寫

                 if(isCapital) {

                      headChars[i]= Character.toUpperCase(headChar);

                 }else {

                      headChars[i]= headChar;

                 }

                 i++;

           }

 

           returnheadChars;

      }

 

      /**

       * 取漢字的首字母(默認是大寫)

       *

       * @param src

       * @return

       */

      publicstatic char[] getHeadByChar(char src) {

           returngetHeadByChar(src, true);

      }

 

      /**

       * 查找字符串首字母

       *

       * @param src

       * @return

       */

      publicstatic String[] getHeadByString(String src) {

           returngetHeadByString(src, true);

      }

 

      /**

       * 查找字符串首字母

       *

       * @param src

       * @param isCapital

       *           是否大寫

       * @return

       */

      publicstatic String[] getHeadByString(String src, boolean isCapital) {

           returngetHeadByString(src, isCapital, null);

      }

 

      /**

       * 查找字符串首字母

       *

       * @param src

       * @param isCapital

       *           是否大寫

       * @param separator

       *           分隔符

       * @return

       */

      publicstatic String[] getHeadByString(String src, boolean isCapital,

                 String separator) {

           char[]chars = src.toCharArray();

           String[]headString = new String[chars.length];

           inti = 0;

           for(char ch : chars) {

 

                 char[]chs = getHeadByChar(ch, isCapital);

                 StringBuffersb = new StringBuffer();

                 if(null != separator) {

                      intj = 1;

 

                      for(char ch1 : chs) {

                            sb.append(ch1);

                            if(j != chs.length) {

                                  sb.append(separator);

                            }

                            j++;

                      }

                 }else {

                      sb.append(chs[0]);

                 }

                 headString[i]= sb.toString();

                 i++;

           }

           returnheadString;

      }

     

      publicstatic void main(String[] args) {

           //pin4j 簡碼 和 城市編碼

           Strings1 = "好好學習天天向上";

           String[]headArray = getHeadByString(s1); // 獲得每個漢字拼音首字母

           System.out.println(Arrays.toString(headArray));

          

           Strings2 ="你好" ;

           System.out.println(Arrays.toString(stringToPinyin(s2,true,",")));

          

           Strings3 ="長";

           System.out.println(Arrays.toString(stringToPinyin(s3,true,",")));

      }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章