java 中漢字轉拼音

需要引入的jar

<!-- pinyin --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

實現工具類

package com.julong.util;import java.util.regex.Pattern;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;/*** 中文轉拼音工具類* @author julong* @date 2023年11月22日 上午11:20:30* @desc */
public class PinyinUtils {//日志private static final Logger logger = LoggerFactory.getLogger(PinyinUtils.class);/*** ^[\u2E80-\u9FFF]+$ 匹配所有東亞區的語言* ^[\u4E00-\u9FFF]+$ 匹配簡體和繁體* ^[\u4E00-\u9FA5]+$ 匹配簡體*/public final static String REGEX="^[\u4E00-\u9FFF]+$";//設置格式public static HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();;public PinyinUtils(){}/*** 漢子轉拼音 * @param data 漢子轉拼音 * @return han zi huan pin yin* @author julong* @date 2023年11月22日 上午11:21:50* @desc*/public static String convertPinyin(String data){logger.debug("【漢子轉拼音工具】-轉換拼音輸入參數-data:{}",data);if(StringUtils.isBlank(data)){return "";}outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);String newData = "";//轉為 charchar[] chars = data.toCharArray();try {//判斷是否為漢子for (char c : chars) {if(Pattern.matches(REGEX,String.valueOf(c))){//轉碼String[] a = PinyinHelper.toHanyuPinyinStringArray(c,outputFormat);newData = newData + a[0] +" ";}else{newData = newData + c + " ";}}} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO: handle exceptionlogger.error("【漢子轉拼音工具】-轉換拼音出現問題:{}",e);return data;}return newData;}/*** 漢子轉拼音 * @param data 漢子轉拼音 * @param caseType <code>HanyuPinyinCaseType</code>* @return <p>小寫:han zi huan pin yin</p><p>大寫:HAN ZI HUAN PIN YIN</p>* @author julong* @date 2023年11月22日 上午11:25:30* @desc*/public static String convertPinyin(String data,HanyuPinyinCaseType caseType){logger.debug("【漢子轉拼音工具】-轉換拼音輸入參數-data:{},caseType:{}",data,caseType.getName());if(StringUtils.isBlank(data)){return "";}outputFormat.setCaseType(caseType);outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);String newData = "";//轉為 charchar[] chars = data.toCharArray();try {//判斷是否為漢子for (char c : chars) {if(Pattern.matches(REGEX,String.valueOf(c))){//轉碼String[] a = PinyinHelper.toHanyuPinyinStringArray(c,outputFormat);newData = newData + a[0] +" ";}else{String str = String.valueOf(c);if(caseType.getName().equals(HanyuPinyinCaseType.UPPERCASE.getName())){str = str.toUpperCase();}newData = newData + str + " ";}}} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO: handle exceptionlogger.error("【漢子轉拼音工具】-轉換拼音出現問題:{}",e);return data;}return newData;}/*** 漢子轉拼音首字母* @param data* @return* @author julong* @date 2023年11月22日 上午11:30:28* @desc*/public static String convertPinyinInitials(String data){logger.debug("【漢子轉拼音工具】-轉換拼音輸入參數-data:{}",data);if(StringUtils.isBlank(data)){return "";}String newData = "";//轉為 charchar[] chars = data.toCharArray();//判斷是否為漢子for (char c : chars) {if(Pattern.matches(REGEX,String.valueOf(c))){//轉碼String[] a = PinyinHelper.toHanyuPinyinStringArray(c);newData = newData + a[0].charAt(0);}else{//不是漢子newData = newData + c;}}return newData;}public static void main(String[] args) {// TODO Auto-generated method stubString zhongwen = "中文轉拼音,pin yin";System.out.println(convertPinyinInitials(zhongwen).toUpperCase());System.out.println(convertPinyin(zhongwen));System.out.println(convertPinyin(zhongwen,HanyuPinyinCaseType.LOWERCASE));System.out.println(convertPinyin(zhongwen,HanyuPinyinCaseType.UPPERCASE));}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

編程語言發展史:高級語言的興起

一、高級語言的定義 高級語言是相對于匯編語言而言的&#xff0c;它是一種更加抽象、更加易于理解和使用的計算機編程語言。高級語言的特點是語法簡單、易于學習、易于使用、可讀性強、可移植性好等。高級語言的出現極大地提高了程序員的工作效率&#xff0c;同時也使得計算機…

Qt connect()方法Qt::ConnectionType

connect() Qt&#xff0c;綁定信號和槽原型&#xff1a; static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…

JSP:Javabean

起初&#xff0c;JavaBean的目的是為了將可以重復使用的代碼進行打包&#xff0c;在傳統的應用中&#xff0c;JavaBean主要用于實現一些可視化界面&#xff0c;如一個窗體、按鈕、文本框等&#xff0c;這樣的JavaBean稱之可視化的JavaBean。 隨著技術的不斷發展與項目的需求&am…

防火墻部署模式 -- 鏡像流量(旁路模式)

鏡像流量&#xff08;旁路模式&#xff09; 如圖&#xff0c;與單臂路由模式不同&#xff0c;旁路模式中&#xff0c;PC的流量不會流經防火墻&#xff0c;就算防火墻宕機也不會影他們之間的數據傳輸。 鏡像的原理是交換機把被鏡像端口的流量復制一份&#xff0c;發到監聽端口&…

尋找二叉樹最近公共祖先

二叉樹為BST LCR 193. 二叉搜索樹的最近公共祖先 1.1 遞歸 利用BST的性質 p root 或者 q root ,顯然根為公共祖先p < root < q 或者 p > root > q,顯然p&#xff0c;q分別位于root的一顆子樹上&#xff0c;故根為公共祖先max{p,q} < root ,顯然 p 和q 均在…

基于單片機聲光控智能路燈系統仿真設計

**單片機設計介紹&#xff0c; 基于單片機聲光控智能路燈系統仿真設計 文章目錄 一 概要二、功能設計設計思路 三、 軟件設計原理圖 五、 程序六、 文章目錄 一 概要 基于單片機的聲光控智能路燈系統是一種利用單片機技術實現智能控制的路燈系統。它通過感知環境音量和光照強度…

Axios 請求響應結果的結構

發送請求 this.$axios.get(https://apis.jxcxin.cn/api/title?urlhttps://apis.jxcxin.cn/,{params: {id: 10}}).then(res > {console.log(res)})輸出返回結果 confing 請求時的配置對象&#xff0c;如果請求的url&#xff0c;請求的方法&#xff0c;請求的參數&#xff0c…

深入理解Java注解的實現原理以及前世今生

深入理解Java注解的實現原理以及前世今生 小雪初寒&#xff0c;請添衣&#xff0c;冬棋如意&#xff0c;待良人&#xff0c;望歸期。 1.Java注解的前世今生 Java注解是一種元數據標記&#xff0c;它提供了一種在Java代碼中添加元數據&#xff08;注釋&#xff09;的方式。注解…

Linux文件

目錄 一、基本概念 二、研究進程和被打開文件的關系 &#xff08;一&#xff09;w方式 &#xff08;二&#xff09;a方式 三、認識系統接口&#xff0c;操作文件 &#xff08;一&#xff09;認識文件描述符 &#xff08;二&#xff09;舉例 &#xff08;三&#xff09;…

2023年中國油墨樹脂主要環節、產量及市場規模分析[圖]

油墨樹脂是指用于油墨制造中的一種高分子材料&#xff0c;主要用于改善油墨的粘性、流動性、光澤度和耐磨性等性能。其主要成分為合成樹脂&#xff0c;如聚酯、聚酰胺、聚丙烯酸酯等。油墨樹脂在油墨制造中的應用非常廣泛&#xff0c;可以用于各種類型的油墨&#xff0c;包括印…

github訪問不了問題

git clone github上的項目的時候&#xff0c;不是訪問不了&#xff0c;就是克隆過程被中斷了 最近找到一個代理&#xff0c;從代理那里clone而不是github上 GitHub代理 – 初果編程

python BDD 的相關概念

在Python 語言中進行BDD的規格和測試文件的編寫的時候&#xff0c;常常會遇到下面的概念&#xff1a; Fixture : 測試設施。設定測試環境的預設狀態或值的機制。Background&#xff1a; 背景。所有場景的公共部分。Scenario&#xff1a; 場景。Given &#xff1a; 前置條件Whe…

centos7 安裝node.js,不用wget也不用解壓文件

更新系統&#xff1a;首先&#xff0c;更新系統的軟件包列表和已安裝的軟件包。在終端中以root用戶或具有sudo權限的用戶身份運行以下命令&#xff1a; sudo yum update添加Node.js源&#xff1a;CentOS 7默認的軟件倉庫中可能不包含最新的Node.js版本。因此&#xff0c;我們需…

[leetcode 數位運算] 2939. 最大異或乘積 M

給你三個整數 a &#xff0c;b 和 n &#xff0c;請你返回 (a XOR x) * (b XOR x) 的 最大值 且 x 需要滿足 0 < x < 2n。 由于答案可能會很大&#xff0c;返回它對 109 7 取余 后的結果。 注意&#xff0c;XOR 是按位異或操作。 示例 1&#xff1a; 輸入&#xff1…

git中的分支管理:git branch,git checkout,解決git中的分支沖突的方法【Git學習三】

&#x1f601; 作者簡介&#xff1a;一名大四的學生&#xff0c;致力學習前端開發技術 ??個人主頁&#xff1a;夜宵餑餑的主頁 ? 系列專欄&#xff1a;Git等軟件工具技術的使用 &#x1f450;學習格言&#xff1a;成功不是終點&#xff0c;失敗也并非末日&#xff0c;最重要…

vue2 識別頁面參數中的html

在Vue 2中&#xff0c;你可以使用v-html指令來識別頁面參數中的HTML內容。v-html指令允許你將HTML代碼作為Vue模板的一部分進行渲染。 以下是一個示例&#xff0c;演示了如何在Vue 2中使用v-html指令來識別頁面參數中的HTML內容&#xff1a; <template><div v-html&…

C語言計算一個數的 n 次方

1、要求 計算一個數的 n 次方&#xff0c;例如: 2 3&#xff0c;其中 2 為基數&#xff0c;3 為指數。 2、使用for循環 #include <stdio.h> int main(){int i,j,k,l1;printf("請輸入基數和指數&#xff1a;");scanf("%d %d",&i,&j);for(k…

雙流網絡論文精讀筆記

精讀視頻&#xff1a;雙流網絡論文逐段精讀【論文精讀】_嗶哩嗶哩_bilibili Two-Stream Convolutional Networks for Action Recognition in Videos 傳統的神經網絡難以學習到物體的運動信息&#xff0c;雙流網絡則通過光流將物體運動信息抽取出來再傳遞給神經網絡 給模型提供…

Golang 中的良好代碼與糟糕代碼

最近&#xff0c;有人要求我詳細解釋在 Golang 中什么是好的代碼和壞的代碼。我覺得這個練習非常有趣。實際上&#xff0c;足夠有趣以至于我寫了一篇關于這個話題的文章。為了說明我的回答&#xff0c;我選擇了我在空中交通管理&#xff08;ATM&#xff09;領域遇到的一個具體用…

linux部署jar 常見問題

1.java -jar xxx.jar no main manifest attribute, in xxx.jar 一.no main manifest attribute, in xxx.jar 在pom.xml文件中加入&#xff1a; <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifac…