日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 汉字转拼音_java实现汉字转拼音

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 汉字转拼音_java实现汉字转拼音 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、問題描述

漢字轉化為對應的拼音或者獲取漢字拼音的首字母,這些都是在開發中經常遇到的問題,在獲取漢字的拼音或者拼音的首字母之后,我們在推薦或者搜索部門可以很大程度提高用戶的體驗,比如用戶輸入“NH”,我們就可以聯想出“你好”、“你會”、“年后”、“內涵”等詞語。在Java中,pinyin4j.jar這個工具很好實現了將漢字轉化為對應的拼音,下面我們就介紹下如何使用這個jar包。

二、資源下載下載之后解壓,直接使用文件中的pinyin4j-2.5.0.jar即可。

三、提供方法我們可以使用HanyuPinyinOutputFormat類來設置拼音的返回方式,比如設置拼音的大小寫、音標方式以及拼音ü的顯示形式,具體如下圖:

直接使用PinyinHelper中的方法來對漢字做對應的轉化,具體有如下三種,三種效果如何自己做下測試即可:

四、編寫代碼

針對我們平常可能用到的功能,我做了如下的封裝,提供的功能還有具體的實現步驟參照代碼中的注釋:

package com.lulei.util;

import java.util.ArrayList;

import java.util.List;

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;

public class PinYinUtil {

private static HanyuPinyinOutputFormat format = null;

static {

format = new HanyuPinyinOutputFormat();

//拼音小寫

format.setCaseType(HanyuPinyinCaseType.LOWERCASE);

//無音標方式;WITH_TONE_NUMBER:1-4數字表示英標;WITH_TONE_MARK:直接用音標符(必須WITH_U_UNICODE否則異常

format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

//用v表示ü

format.setVCharType(HanyuPinyinVCharType.WITH_V);

}

/**

* @param str

* @return

* @Description: 返回字符串的拼音

*/

public static String[] getCharPinYinString(String str) {

if (str == null || str.length() < 1) {

return null;

}

List result = new ArrayList();

//對字符串中的記錄逐個分析

for (int i = 0; i < str.length(); i++) {

result = getCharPinYinString(str.charAt(i), result);

}

return result.toArray(new String[result.size()]);

}

/**

* @param c

* @param list

* @return

* @Description: 將字符c的拼音拼接到list中的記錄中

*/

private static List getCharPinYinString(char c, List list) {

String[] strs = getCharPinYinString(c);

List result = new ArrayList();

//如果解析出的拼音為空,判斷字符C是否為英文字母,如果是英文字母則添加值拼音結果中

if (strs == null) {

if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {

c = c <= 91 ? (char)(c + 32) : c;

if (list == null || list.size() == 0) {

result.add(c + "");

} else {

for (String s : list) {

result.add(s + c);

}

}

return result;

}

return list;

}

//將字符C的拼音首和已存在的拼音首組合成新的記錄

for (String str : strs) {

if (list == null || list.size() == 0) {

result.add(str);

} else {

for (String s : list) {

result.add(s + str);

}

}

}

return result;

}

/**

* @param c

* @return

* @Description: 返回漢字的拼音

*/

public static String[] getCharPinYinString(char c) {

try {

//返回字符C的拼音

return PinyinHelper.toHanyuPinyinStringArray(c, format);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* @param str

* @return

* @Description: 返回字符串的拼音的首字母

*/

public static String[] getCharPinYinChar(String str) {

if (str == null || str.length() < 1) {

return null;

}

List result = new ArrayList();

//對字符串中的記錄逐個分析

for (int i = 0; i < str.length(); i++) {

result = getCharPinYinChar(str.charAt(i), result);

}

return result.toArray(new String[result.size()]);

}

/**

* @param c

* @param list

* @return

* @Description: 將字符c的拼音首字母拼接到list中的記錄中

*/

private static List getCharPinYinChar(char c, List list) {

char[] chars = getCharPinYinChar(c);

List result = new ArrayList();

//如果解析出的拼音為空,判斷字符C是否為英文字母,如果是英文字母則添加值拼音結果中

if (chars == null) {

if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {

c = c < 91 ? (char)(c + 32) : c;

if (list == null || list.size() == 0) {

result.add(c + "");

} else {

for (String s : list) {

result.add(s + c);

}

}

return result;

}

return list;

}

//將字符C的拼音首字母和已存在的拼音首字母組合成新的記錄

for (char ch : chars) {

if (list == null || list.size() == 0) {

result.add(ch + "");

} else {

for (String s : list) {

result.add(s + ch);

}

}

}

return result;

}

/**

* @param c

* @return

* @Description:返回漢字拼音首字母

*/

public static char[] getCharPinYinChar(char c) {

//字符C的拼音

String[] strs = getCharPinYinString(c);

if (strs != null) {

//截取拼音的首字母

char[] chars = new char[strs.length];

for(int i = 0; i

chars[i] = strs[i].charAt(0);

}

return chars;

}

return null;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

char c = "重慶".charAt(0);

String[] str = PinYinUtil.getCharPinYinString(c);

for(String s : str) {

System.out.println(s);

}

char[] chars = PinYinUtil.getCharPinYinChar(c);

for(char c1 : chars) {

System.out.println(c1);

}

str = PinYinUtil.getCharPinYinString("重慶c");

for(String s : str) {

System.out.println(s);

}

str = PinYinUtil.getCharPinYinChar("重慶a");

for(String s : str) {

System.out.println(s);

}

}

}

五、輸出結果

以上就是java實現漢字轉拼音的全部內容,希望對大家的學習有所幫助。

總結

以上是生活随笔為你收集整理的java 汉字转拼音_java实现汉字转拼音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。