欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java漢字轉(zhuǎn)拼音pinyin4j用法詳解

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

一、工具介紹

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

1. 功能

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

2. 目錄結(jié)構(gòu)及說明

  • 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編碼與拼音的對應(yīng)關(guān)系,通過讀取該配置文件達(dá)到轉(zhuǎn)換的目的。

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

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

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

二、pinyin4J 使用

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

- toHanyuPinyinString()(過時(shí))

- toHanyuPinyinStringArray()

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

- HanyuPinyinCaseType

- HanyuPinyinToneType

- HanyuPinyinVCharType

- HanyuPinyinOutputFormat

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

HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 控制大小寫
// UPPERCASE:大寫 (ZHONG)
// LOWERCASE:小寫 (zhong)
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
// WITHOUT_TONE:無音標(biāo) (zhong)
// WITH_TONE_NUMBER:1-4數(shù)字表示英標(biāo) (zhong4)
// WITH_TONE_MARK:直接用音標(biāo)符(必須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如果傳入的字符不是漢字不能轉(zhuǎn)換成拼音,那么會直接返回null。
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', defaultFormat);
for(String str: pinyin){
  System.out.println(str);
}

結(jié)果:

ZHONG4

CHONG2

其他工具類

獲取獲得漢語拼音首字母

將字符串中的中文轉(zhuǎn)化為拼音,英文字符不變

/**
 * 獲得漢語拼音首字母
 *
 * @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;
}

/**
 * 將字符串中的中文轉(zhuǎn)化為拼音,英文字符不變
 *
 * @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;
}

/**
 * 漢字轉(zhuǎn)換為漢語拼音首字母,英文字符不變
 *
 * @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;
}

更多關(guān)于Java漢字轉(zhuǎn)拼音pinyin4j用法請查看下面的相碰鏈接

相關(guān)文章

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

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

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

    Bean實(shí)例化之前修改BeanDefinition示例詳解

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

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

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

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

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

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

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

    Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性示例

    這篇文章主要介紹了Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性,結(jié)合實(shí)例形式分析了java多態(tài)性的概念、原理、定義與使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Java IO中字節(jié)流復(fù)制圖片實(shí)現(xiàn)代碼

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

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

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

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

    java 中HttpClient傳輸xml字符串實(shí)例詳解

    這篇文章主要介紹了java 中HttpClient傳輸xml字符串實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java Map 按Key排序?qū)嵗a

    Java Map 按Key排序?qū)嵗a

    這篇文章主要介紹了Java Map 按Key排序?qū)嵗a的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論