亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java漢字轉拼音pinyin4j用法詳解

 更新時間:2020年02月20日 15:27:08   作者:七弦桐  
這篇文章主要介紹了Java漢字轉拼音pinyin4j用法詳解,需要的朋友可以參考下

一、工具介紹

pinyin4j 是一個支持將簡體和繁體中文轉換到成拼音的Java開源類庫;

1. 功能

  • 支持同一漢字有多個發(fā)音
  • 還支持拼音的格式化輸出,比如第幾聲之類的,
  • 同時支持簡體中文、繁體中文轉換為拼音…使用起來也非常簡單。下面是其官方網(wǎng)址,其中提供了下載:
  • pinyin4j的官方下載地址

2. 目錄結構及說明

  • doc : pinyin4j的api文檔
  • lib : pinyin4j的jar包
  • src: pinyin4j的源代碼
  • CHANGELOG.txt : pinyin4j的版本更新日志
  • COPYING.txt : LICENSE說明
  • README.txt : pinyin4j的概要介紹

3. 原理

pinyin4j使用了一個.txt的文本文件(uicode_to_hanyu_pinyin.txt)用來存儲漢字unicode編碼與拼音的對應關系,通過讀取該配置文件達到轉換的目的。

該屬性文件存儲信息的基本格式如下:89E3 (jie3,jie4,xie4) //(對應漢字”解”)89E3 是漢字對應的unicode編碼的16進制數(shù),(jie3,jie4,xie4)是該漢字對應的三種讀音(在漢語里有多音字)

說明pinyin4j支持多音字的處理pinyin4j的處理過程是這樣的:

根據(jù)String的toCharArray方法得到每個字符(得到”解”字的unicode編碼,實際上是35299,由于java中char和String都是unicode編碼的可以直接轉為int型的編碼數(shù)據(jù)35299),然后利用Integer.toHexString(c1).toUpperCase()將其轉換成16進制數(shù)[也就是89E3],通過讀取配置文件得到“解”字的拼音(jie3,jie4,xie4),那么這里有三個拼音,pinyin4j的默認取值為第一個,也就是jie3[表示讀jie,聲調(diào)是三聲]

二、pinyin4J 使用

pinyin4j 提供的工具類為PinyinHelper,里邊提供了靜態(tài)方法

- toHanyuPinyinString()(過時)

- toHanyuPinyinStringArray()

pinyin4j 中有四個輔助類分別是:

- HanyuPinyinCaseType

- HanyuPinyinToneType

- HanyuPinyinVCharType

- HanyuPinyinOutputFormat

具體功能和用法見一下代碼:

HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 控制大小寫
// UPPERCASE:大寫 (ZHONG)
// LOWERCASE:小寫 (zhong)
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
// WITHOUT_TONE:無音標 (zhong)
// WITH_TONE_NUMBER:1-4數(shù)字表示英標 (zhong4)
// WITH_TONE_MARK:直接用音標符(必須WITH_U_UNICODE否則異常) (zhòng)
defaultFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
// WITH_V:用v表示ü (nv)
// WITH_U_AND_COLON:用"u:"表示ü (nu:)
// WITH_U_UNICODE:直接用ü (nü)
defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
// oHanyuPinyinStringArray如果傳入的字符不是漢字不能轉換成拼音,那么會直接返回null。
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', defaultFormat);
for(String str: pinyin){
  System.out.println(str);
}

結果:

ZHONG4

CHONG2

其他工具類

獲取獲得漢語拼音首字母

將字符串中的中文轉化為拼音,英文字符不變

/**
 * 獲得漢語拼音首字母
 *
 * @param chines
 *      漢字
 * @return
 */
public static String getAlpha(String chines) {
  String pinyinName = "";
  char[] nameChar = chines.toCharArray();
  HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  for (int i = 0; i < nameChar.length; i++) {
    if (nameChar[i] > 128) {
      try {
        pinyinName += PinyinHelper.toHanyuPinyinStringArray(
            nameChar[i], defaultFormat)[0].charAt(0);
      } catch (BadHanyuPinyinOutputFormatCombination e) {
        e.printStackTrace();
      }
    } else {
      pinyinName += nameChar[i];
    }
  }
  return pinyinName;
}

/**
 * 將字符串中的中文轉化為拼音,英文字符不變
 *
 * @param inputString
 *      漢字
 * @return
 */
public static String getPingYin(String inputString) {
  HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  format.setVCharType(HanyuPinyinVCharType.WITH_V);
  String output = "";
  if (inputString != null && inputString.length() > 0
      && !"null".equals(inputString)) {
    char[] input = inputString.trim().toCharArray();
    try {
      for (int i = 0; i < input.length; i++) {
        if (java.lang.Character.toString(input[i]).matches(
            "[\\u4E00-\\u9FA5]+")) {
          String[] temp = PinyinHelper.toHanyuPinyinStringArray(
              input[i], format);
          output += temp[0];
        } else
          output += java.lang.Character.toString(input[i]);
      }
    } catch (BadHanyuPinyinOutputFormatCombination e) {
      e.printStackTrace();
    }
  } else {
    return "*";
  }
  return output;
}

/**
 * 漢字轉換為漢語拼音首字母,英文字符不變
 *
 * @param chines
 *      漢字
 * @return 拼音
 */
public static String converterToFirstSpell(String chines) {
  String pinyinName = "";
  char[] nameChar = chines.toCharArray();
  HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
  defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  for (int i = 0; i < nameChar.length; i++) {
    if (nameChar[i] > 128) {
      try {
        pinyinName += PinyinHelper.toHanyuPinyinStringArray(
            nameChar[i], defaultFormat)[0].charAt(0);
      } catch (BadHanyuPinyinOutputFormatCombination e) {
        e.printStackTrace();
      }
    } else {
      pinyinName += nameChar[i];
    }
  }
  return pinyinName;
}

更多關于Java漢字轉拼音pinyin4j用法請查看下面的相碰鏈接

相關文章

  • Spring中的事件發(fā)布機制原理解析

    Spring中的事件發(fā)布機制原理解析

    這篇文章主要介紹了Spring中的事件發(fā)布機制原理解析,當我們關心spring容器什么時候刷新,或者想在spring容器刷新的時候做一些事情,監(jiān)聽關心的事件,主要就是在ApplicationListener中寫對應的事件,需要的朋友可以參考下
    2023-11-11
  • Bean實例化之前修改BeanDefinition示例詳解

    Bean實例化之前修改BeanDefinition示例詳解

    這篇文章主要為大家介紹了Bean實例化之前修改BeanDefinition示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • MyBatis傳入?yún)?shù)的實例代碼

    MyBatis傳入?yún)?shù)的實例代碼

    這篇文章主要介紹了MyBatis傳入?yún)?shù)的實例代碼的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Java實現(xiàn)的矩陣乘法示例

    Java實現(xiàn)的矩陣乘法示例

    這篇文章主要介紹了Java實現(xiàn)的矩陣乘法,簡單描述了矩陣乘法的原理,并結合實例形式分析了java實現(xiàn)矩陣乘法的相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • Spring三種方法的注解自動注入問題

    Spring三種方法的注解自動注入問題

    這篇文章主要介紹了Spring三種方法的注解自動注入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java面向對象程序設計多態(tài)性示例

    Java面向對象程序設計多態(tài)性示例

    這篇文章主要介紹了Java面向對象程序設計多態(tài)性,結合實例形式分析了java多態(tài)性的概念、原理、定義與使用方法及相關注意事項,需要的朋友可以參考下
    2018-03-03
  • Java IO中字節(jié)流復制圖片實現(xiàn)代碼

    Java IO中字節(jié)流復制圖片實現(xiàn)代碼

    這篇文章主要介紹了Java IO中字節(jié)流復制圖片實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2017-04-04
  • JDK17安裝教程以及其環(huán)境變量配置教程

    JDK17安裝教程以及其環(huán)境變量配置教程

    環(huán)境變量對Java初學者來說真的是一件頭疼的事,本人也經(jīng)歷過這樣的事情,這篇文章主要給大家介紹了關于JDK17安裝教程以及其環(huán)境變量配置的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • java 中HttpClient傳輸xml字符串實例詳解

    java 中HttpClient傳輸xml字符串實例詳解

    這篇文章主要介紹了java 中HttpClient傳輸xml字符串實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • Java Map 按Key排序實例代碼

    Java Map 按Key排序實例代碼

    這篇文章主要介紹了Java Map 按Key排序實例代碼的相關資料,需要的朋友可以參考下
    2017-02-02

最新評論