最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)漢字轉拼音的四種方案

 更新時間:2025年12月26日 09:31:47   作者:SimonKing  
在Java開發(fā)中,處理中文拼音轉換是常見卻棘手的需求,無論是智能搜索、數(shù)據(jù)排序,還是拼音首字母檢索,面對多音字、性能瓶頸、內存占用等問題,開發(fā)者該如何選擇,今天分享四種工具應對不同場景,需要的朋友可以參考下

01 引言

在Java開發(fā)中,處理中文拼音轉換是常見卻棘手的需求——無論是智能搜索、數(shù)據(jù)排序,還是拼音首字母檢索。面對多音字、性能瓶頸、內存占用等問題,開發(fā)者該如何選擇?

今天分享四種工具應對不同場景的漢字轉拼音功能!

02 TinyPinyin

輕量級、高效的漢字轉拼音庫,不依賴任何外部詞典文件。具有體積?。s60KB)、速度快、支持多音字(需詞典)、支持拼音格式轉換的特性。

2.2 Maven依賴

<dependency>
    <groupId>com.github.promeg</groupId>
    <artifactId>tinypinyin</artifactId>
    <version>2.0.3</version>
</dependency>

2.3 基本使用

@Test
void test01() {
    Pinyin.init(Pinyin.newConfig().with(CnCityDict.getInstance()));
    String pinyin = Pinyin.toPinyin("中國", " ");
    System.out.println(pinyin); // ZHONG GUO

    String pinyin1 = Pinyin.toPinyin('中');
    System.out.println(pinyin1); // ZHONG

    System.out.println(Pinyin.isChinese('中')); // true
    System.out.println(Pinyin.isChinese('C')); // false
}

主要功能就是將漢字轉成拼音,并通過指定的分隔符分開,還可以判斷字符是否為漢字。功能非常簡單,基本的漢字轉拼音已經(jīng)夠用了。

多音字的處理需要定義自己的詞典。我們看看內置的詞典庫CnCityDict

其實內部就是一個詞典庫,通過Map映射,我們可以自定義實現(xiàn)。

03 JPinyin

功能豐富的拼音轉換工具,支持多音字、簡繁體轉換。

3.1 Maven依賴

<dependency>
    <groupId>com.github.stuxuhai</groupId>
    <artifactId>jpinyin</artifactId>
    <version>1.1.8</version>
</dependency>

3.2 基本使用

@Test
void test02() throws PinyinException {
    // 轉換為帶聲調拼音
    String pinyin1 = PinyinHelper.convertToPinyinString(
            "重慶銀行", " ", PinyinFormat.WITH_TONE_MARK);
    System.out.println(pinyin1); // zhòng qìng yín háng


    // 轉換為數(shù)字聲調
    String pinyin2 = PinyinHelper.convertToPinyinString(
            "重慶銀行", " ", PinyinFormat.WITH_TONE_NUMBER);
    System.out.println(pinyin2); // zhong4 qing4 yin2 hang2

    // 不帶聲調
    String pinyin3 = PinyinHelper.convertToPinyinString(
            "重慶銀行", " ", PinyinFormat.WITHOUT_TONE);
    System.out.println(pinyin3); // zhong qing yin hang

    // 獲取拼音首字母
    String shortPinyin = PinyinHelper.getShortPinyin("你好精神小伙");
    System.out.println(shortPinyin); // nhjsxh

    // 檢查是否為多音字
    String[] duoyin = PinyinHelper.convertToPinyinArray('重');
    for (String py : duoyin) {
        System.out.println(py); // zhòng, chóng
    }
}

該工具內置支持多音字,支持聲調。

04 Pinyin4j

老牌的拼音轉換庫,功能全面但相對較重。

4.1 Maven依賴

 <dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

4.2 基本使用

@Test
void test03() throws BadHanyuPinyinOutputFormatCombination {
    HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
    // 配置輸出格式
    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不帶聲調
    format.setVCharType(HanyuPinyinVCharType.WITH_V);     // 使用v表示ü

    String[] duoyin = PinyinHelper.toHanyuPinyinStringArray('重', format);
    for (String py : duoyin) {
        System.out.println(py); // zhong, chong
    }

    String hanYuPinyinString = PinyinHelper.toHanYuPinyinString("中國國歌", format, " ", true);
    System.out.println(hanYuPinyinString); // zhong guo guoge

    String[] duoyin2 = PinyinHelper.toTongyongPinyinStringArray('重');
    for (String py : duoyin2) {
        System.out.println(py);// jhong4, chong2
    }
}

Pinyin4j到目前位置已經(jīng)9年沒有更新了。支持聲調、v與ü的表示。支持多音字,以及其他拼音系統(tǒng)。

05 HanLP

HanLP是一系列模型與算法組成的NLP工具包,目標是普及自然語言處理在生產環(huán)境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。其中漢字轉拼音只是其中一個小工具。

5.1 Maven依賴

<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.8.6</version>
</dependency>

5.2 基礎使用

@Test
void test04() {
    List<Pinyin> list = HanLP.convertToPinyinList("重");
    for (Pinyin pinyin : list) {
        System.out.println(pinyin.getPinyinWithoutTone());
        System.out.println(pinyin.getPinyinWithToneMark());
        System.out.println(pinyin.getFirstChar());
        System.out.println(pinyin.getShengmu());
        System.out.println(pinyin.getYunmu());
        System.out.println(pinyin.getTone());
        System.out.println(pinyin.getHead());
        System.out.println("-------------------");
    }


    String pinyinString = HanLP.convertToPinyinString("重載不是重任", " ", false);
    System.out.println(pinyinString);

    System.out.println(HanLP.convertToTraditionalChinese("用筆記本電腦寫程序"));
    System.out.println(HanLP.convertToSimplifiedChinese("「以後等妳當上皇后,就能買士多啤梨慶祝了」"));
}

HanLP可以將漢字轉成Pinyin對象,然后可以獲取拼音、聲母、韻母、首字母、頭信息等,還可以簡繁體轉化。雖然能在語義中識別多音字,但不能直接獲取多音字的拼音。

06 小結

漢字轉拼音雖是小功能,卻直接影響用戶體驗和系統(tǒng)性能。本文分享的4款工具各有優(yōu)缺點,可以應對不同的場景,大家可以根據(jù)需要選擇。掌握這些框架,讓中文處理不再是技術痛點,而是產品亮點。

以上就是Java實現(xiàn)漢字轉拼音的四種方案的詳細內容,更多關于Java漢字轉拼音的資料請關注腳本之家其它相關文章!

相關文章

  • Go?Java算法之交錯字符串示例詳解

    Go?Java算法之交錯字符串示例詳解

    這篇文章主要為大家介紹了Go?Java算法之交錯字符串示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Java實現(xiàn)將HTML文件與字符串轉換為圖片

    Java實現(xiàn)將HTML文件與字符串轉換為圖片

    在 Java 開發(fā)中,我們經(jīng)常會遇到將 HTML 內容轉換為圖片的需求,本文小編就來和大家詳細講講如何使用 Free Spire.Doc for Java 庫來實現(xiàn)這一功能吧
    2025-08-08
  • Mybatis 自定義類型處理器示例詳解

    Mybatis 自定義類型處理器示例詳解

    在某些情況下我們需要對類型做處理,例如數(shù)據(jù)存儲的是Long,程序里是BigDecimal,那么我們出庫入庫都需要做處理,此時就可以使用類型處理器,本文通過示例給大家介紹Mybatis 自定義類型處理器的相關知識,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Mybatis 中Mapper使用package方式配置報錯的解決方案

    Mybatis 中Mapper使用package方式配置報錯的解決方案

    這篇文章主要介紹了Mybatis 中Mapper使用package方式配置報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java詳細分析連接數(shù)據(jù)庫的流程

    Java詳細分析連接數(shù)據(jù)庫的流程

    Java數(shù)據(jù)庫連接,JDBC是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法。JDBC也是Sun Microsystems的商標。我們通常說的JDBC是面向關系型數(shù)據(jù)庫的
    2022-05-05
  • java-jwt通過公鑰字符串驗證解析token方式

    java-jwt通過公鑰字符串驗證解析token方式

    本文示例如何將公鑰字符串轉換為RSAPublicKey對象以校驗JWT token,解決了Java-JWT庫中公鑰格式不匹配的問題,并提供代碼測試方法
    2025-08-08
  • idea中VM options配置方式

    idea中VM options配置方式

    文章介紹了JVM的多個配置參數(shù),如堆內存設置、線程棧大小、年輕代與年老代的配置等,其中包括標準參數(shù)和各種非標準參數(shù)(-X和-XX),并提到了它們對JVM性能和垃圾回收機制的影響,還區(qū)分了Client和Server模式
    2025-10-10
  • 詳解SpringMVC學習系列之國際化

    詳解SpringMVC學習系列之國際化

    這篇文章主要介紹了詳解SpringMVC學習系列之國際化,詳細的介紹了關于瀏覽器,Session,Cookie,URL請求的國際化的實現(xiàn),有興趣的可以了解一下
    2017-07-07
  • Java高頻面試題之海量數(shù)據(jù)處理分析

    Java高頻面試題之海量數(shù)據(jù)處理分析

    海量信息處理日益成為當前程序員筆試面試中一個新的亮點。硬件擴容是難滿足海量數(shù)據(jù)處理需要的,如何利用現(xiàn)有條件進行海量信息處理?本文就來為大家解答一下
    2022-10-10
  • Java形參和實參的實例之Integer類型與Int類型用法說明

    Java形參和實參的實例之Integer類型與Int類型用法說明

    這篇文章主要介紹了Java形參和實參的實例之Integer類型與Int類型用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論

昆明市| 漯河市| 祁阳县| 鸡泽县| 泊头市| 南丰县| 屯昌县| 茂名市| 错那县| 嵊州市| 唐山市| 大冶市| 昌平区| 全南县| 左云县| 石河子市| 唐河县| 哈巴河县| 耒阳市| 临洮县| 湛江市| 金华市| 舒兰市| 佛教| 正阳县| 盐源县| 丰宁| 天长市| 延寿县| 阜城县| 吉隆县| 玉溪市| 云浮市| 泾阳县| 德州市| 田林县| 祁连县| 大兴区| 德清县| 博野县| 衡阳县|