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

Java實(shí)戰(zhàn)之城市多音字處理

 更新時(shí)間:2021年04月28日 15:00:01   作者:litGrey  
這篇文章主要介紹了Java實(shí)戰(zhàn)之城市多音字處理,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下

一、需求

對(duì)城市名稱轉(zhuǎn)化為拼音的時(shí)候,當(dāng)遇到多音字城市的時(shí)候,轉(zhuǎn)化拼音就不是我們想要的了。

使用  pinyin4j 無法直接解決這個(gè)問題。 。網(wǎng)上有很多維護(hù)多音字信息的,覺得麻煩。

如:

長沙 ====>"zhangsha"  
廈門===>"shamen"  
重慶===>"zhongqing"

二、導(dǎo)入 jpinyin

版本自選

<!-- https://mvnrepository.com/artifact/com.github.stuxuhai/jpinyin -->
        <dependency>
            <groupId>com.github.stuxuhai</groupId>
            <artifactId>jpinyin</artifactId>
            <version>1.1.8</version>
        </dependency>

三、直接創(chuàng)建工具類(不需要其他操作)

import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
 
/**
 * @Description:
 * @Date: 2021/4/27 16:26
 * @Author: luch
 * @Version: 1.0
 **/
public class ChangeToPinYinJPinYin {
 
 
    /**
     * 轉(zhuǎn)換為有聲調(diào)的拼音字符串
     *
     * @param pinYinStr 漢字
     * @return 有聲調(diào)的拼音字符串
     */
    public static String changeToMarkPinYin(String pinYinStr) {
 
        String tempStr = null;
 
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK);
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
 
    }
 
 
    /**
     * 轉(zhuǎn)換為數(shù)字聲調(diào)字符串
     *
     * @param pinYinStr 需轉(zhuǎn)換的漢字
     * @return 轉(zhuǎn)換完成的拼音字符串
     */
    public static String changeToNumberPinYin(String pinYinStr) {
 
        String tempStr = null;
 
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return tempStr;
 
    }
 
    /**
     * 轉(zhuǎn)換為不帶音調(diào)的拼音字符串
     *
     * @param pinYinStr 需轉(zhuǎn)換的漢字
     * @return 拼音字符串
     */
    public static String changeToTonePinYin(String pinYinStr) {
 
        String tempStr = null;
 
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, "", PinyinFormat.WITHOUT_TONE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
 
    }
 
    /**
     * 轉(zhuǎn)換為每個(gè)漢字對(duì)應(yīng)拼音首字母字符串
     *
     * @param pinYinStr 需轉(zhuǎn)換的漢字
     * @return 拼音字符串
     */
    public static String changeToGetShortPinYin(String pinYinStr) {
 
        String tempStr = null;
 
        try {
            tempStr = PinyinHelper.getShortPinyin(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
 
    }
 
    /**
     * 檢查漢字是否為多音字
     *
     * @param pinYinStr 需檢查的漢字
     * @return true 多音字,false 不是多音字
     */
    public static boolean checkPinYin(char pinYinStr) {
 
        boolean check = false;
        try {
            check = PinyinHelper.hasMultiPinyin(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return check;
    }
 
    /**
     * 簡(jiǎn)體轉(zhuǎn)換為繁體
     *
     * @param pinYinStr
     * @return
     */
    public static String changeToTraditional(String pinYinStr) {
 
        String tempStr = null;
        try {
            tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
 
    }
 
    /**
     * 繁體轉(zhuǎn)換為簡(jiǎn)體
     *
     * @param pinYinSt
     * @return
     */
    public static String changeToSimplified(String pinYinSt) {
 
        String tempStr = null;
 
        try {
            tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return tempStr;
 
    }
 
 
 
}

四、直接測(cè)試代碼

public static void main(String[] args) {
        String str = "長沙市";
        System.out.println("轉(zhuǎn)換為有聲調(diào)的拼音字符串:"+changeToMarkPinYin(str));
        System.out.println("轉(zhuǎn)換為不帶音調(diào)的拼音字符串:"+changeToTonePinYin(str));
 
        String strFanTi="誰是程序員";
        System.out.println("繁體轉(zhuǎn)換為簡(jiǎn)體:"+changeToSimplified(strFanTi));
        System.out.println("重"+"重是否是多音字:"+checkPinYin('重'));
        System.out.println("廈"+"是否是多音字:"+checkPinYin('廈'));
        System.out.println("鼠"+"是否是多音字:"+checkPinYin('鼠'));
    }

輸出結(jié)果,下面不同字的中間是否有空格,這個(gè)可以自己設(shè)置的

五、源碼分析

5.1 字典對(duì)應(yīng)信息

分別是:從上到下分別是

1.繁體-簡(jiǎn)體對(duì)應(yīng)表

2.多音字

3.帶音標(biāo)的拼音

5.2 6個(gè)處理類

5.3 處理模式

點(diǎn)開

com.github.stuxuhai.jpinyin.PinyinResource#getPinyinResource

有三個(gè)方法分別加載了這幾個(gè)資源

然后通過

com.github.stuxuhai.jpinyin.ChineseHelper 

 通過一個(gè)鍵值對(duì)獲取。加載處理而已。

到此這篇關(guān)于Java實(shí)戰(zhàn)之城市多音字處理的文章就介紹到這了,更多相關(guān)java城市多音字處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決IDEA顯示非法字符 \ufeff 的問題

    解決IDEA顯示非法字符 \ufeff 的問題

    這篇文章主要介紹了解決IDEA顯示非法字符 \ufeff 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java多線程編程之使用thread類創(chuàng)建線程

    java多線程編程之使用thread類創(chuàng)建線程

    在Java中創(chuàng)建線程有兩種方法:使用Thread類和使用Runnable接口。在使用Runnable接口時(shí)需要建立一個(gè)Thread實(shí)例
    2014-01-01
  • Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象

    這篇文章主要給大家介紹了關(guān)于Spring如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象的相關(guān)資料,在Spring 中想要更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核?是使?注解,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • springboot寶塔簡(jiǎn)單部署的實(shí)現(xiàn)示例

    springboot寶塔簡(jiǎn)單部署的實(shí)現(xiàn)示例

    通過使用Spring Boot,可以快速構(gòu)建出高效、可擴(kuò)展的應(yīng)用程序,而寶塔面板則提供了簡(jiǎn)單易用的網(wǎng)站管理和維護(hù)工具,本文將詳細(xì)介紹如何將Spring Boot應(yīng)用程序與寶塔面板進(jìn)行集成,實(shí)現(xiàn)自動(dòng)化部署、配置管理等操作
    2023-11-11
  • 基于Java+SpringBoot實(shí)現(xiàn)人臉識(shí)別搜索

    基于Java+SpringBoot實(shí)現(xiàn)人臉識(shí)別搜索

    人臉識(shí)別搜索技術(shù)作為現(xiàn)代計(jì)算機(jī)視覺領(lǐng)域的重要研究方向之一,已經(jīng)在多個(gè)領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,隨著信息技術(shù)的飛速發(fā)展,人臉識(shí)別搜索在多個(gè)領(lǐng)域得到了廣泛關(guān)注和應(yīng)用,本文旨在探討人臉識(shí)別搜索技術(shù)的背景、原理以及其在實(shí)際應(yīng)用中的意義和挑戰(zhàn)
    2023-08-08
  • Spring?Boot中使用Spring?Retry重試框架的操作方法

    Spring?Boot中使用Spring?Retry重試框架的操作方法

    這篇文章主要介紹了Spring?Retry?在SpringBoot?中的應(yīng)用,介紹了RetryTemplate配置的時(shí)候,需要設(shè)置的重試策略和退避策略,需要的朋友可以參考下
    2022-04-04
  • Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例

    Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例

    這篇文章主要為大家介紹了Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 圖片疊加效果Java代碼實(shí)現(xiàn)

    圖片疊加效果Java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了圖片疊加效果Java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • java ZXing生成二維碼及條碼實(shí)例分享

    java ZXing生成二維碼及條碼實(shí)例分享

    本文分享了java ZXing生成二維碼及條碼的實(shí)例代碼,具有很好的參考價(jià)值,需要的朋友一起來看下吧
    2016-12-12
  • Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    本文給大家分享的是使用java實(shí)現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-03-03

最新評(píng)論