久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>知識>java將英文字母轉換成數字(JAVA實現漢字轉換為拼音)

java將英文字母轉換成數字(JAVA實現漢字轉換為拼音)

發布時間:2024-01-23閱讀(11)

導讀在項目中經常會遇到需求用戶輸入漢字后轉換為拼音的場景,比如說通訊錄,就會要求按名字首字符發音排序,如果自己寫實現這方面的功能是個很好大的工程,還好網上有公開....

在項目中經常會遇到需求用戶輸入漢字后轉換為拼音的場景,比如說通訊錄,就會要求按名字首字符發音排序,如果自己寫實現這方面的功能是個很好大的工程,還好網上有公開的第三方jar支持轉換,結合網上很多前輩的代碼,copy了兩個簡單的工具方法,供參考

第一個是使用pinyin4j的jar,此jar對多音字語句的處理不太理想

package com.lovo.utils;import org.springframework.stereotype.Component;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;/** * pinyin4j漢字轉拼音工具類 * @author zhiheng * */@Componentpublic class ChangeToPinYin { //pinyin4j格式類 private HanyuPinyinOutputFormat format = null; //拼音字符串數組 private String[]pinyin; //通過構造方法進行初始化 public ChangeToPinYin(){ format = new HanyuPinyinOutputFormat(); /* * 設置需要轉換的拼音格式 * 以天為例 * HanyuPinyinToneType.WITHOUT_TONE 轉換為tian * HanyuPinyinToneType.WITH_TONE_MARK 轉換為tian1 * HanyuPinyinVCharType.WITH_U_UNICODE 轉換為tiān * */ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); pinyin = null; } /** * 對單個字進行轉換 * @param pinYinStr 需轉換的漢字字符串 * @return 拼音字符串數組 */ public String getCharPinYin(char pinYinStr){ try { //執行轉換 pinyin = PinyinHelper.toHanyuPinyinStringArray(pinYinStr, format); } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } //pinyin4j規則,當轉換的符串不是漢字,就返回null if(pinyin == null){ return null; } //多音字會返回一個多音字拼音的數組,pinyiin4j并不能有效判斷該字的讀音 return pinyin[0]; } /** * 對單個字進行轉換 * @param pinYinStr * @return */ public String getStringPinYin(String pinYinStr){ StringBuffer sb = new StringBuffer(); String tempStr = null; //循環字符串 for(int i = 0; i<pinYinStr.length(); i ) { tempStr = this.getCharPinYin(pinYinStr.charAt(i)); if(tempStr == null) { //非漢字直接拼接 sb.append(pinYinStr.charAt(i)); } else { sb.append(tempStr); } } return sb.toString(); }}

測試

import javax.annotation.Resource;import org.junit.Ignore;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.lovo.utils.ChangeToPinYin;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:applicationContext.xml"})public class ToPinYinTest { @Resource private ChangeToPinYin changeToPinYin; @Test public void changePinYinTest(){ String str = "你在做什么?what are you nong sa lie?"; System.out.println(changeToPinYin.getStringPinYin(str)); } @Ignore public void changechar(){ char c = 你; System.out.println(changeToPinYin.getCharPinYin(c)); } }

測試結果

java將英文字母轉換成數字(JAVA實現漢字轉換為拼音)(1)

第二個方法使用JPinyin,說是在pinyin4j的jar上進行了優化,可以實現漢字轉換為拼音,并自動識別常用多音字,還支持簡體轉換為繁體,檢查是否為簡體,是否為繁體,是否為中文字符等功能,下面一段代碼簡單列舉了下漢字轉換拼音及簡體轉換繁體

package com.lovo.utils;import opensource.jpinyin.ChineseHelper;import opensource.jpinyin.PinyinFormat;import opensource.jpinyin.PinyinHelper;import org.springframework.stereotype.Component;@Componentpublic class ChangeToPinYinJP { /** * 轉換為有聲調的拼音字符串 * @param pinYinStr 漢字 * @return 有聲調的拼音字符串 */ public String changeToMarkPinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 轉換為數字聲調字符串 * @param pinYinStr 需轉換的漢字 * @return 轉換完成的拼音字符串 */ public String changeToNumberPinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 轉換為不帶音調的拼音字符串 * @param pinYinStr 需轉換的漢字 * @return 拼音字符串 */ public String changeToTonePinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITHOUT_TONE); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 轉換為每個漢字對應拼音首字母字符串 * @param pinYinStr 需轉換的漢字 * @return 拼音字符串 */ public 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 boolean checkPinYin(char pinYinStr){ boolean check = false; try { check = PinyinHelper.hasMultiPinyin(pinYinStr); } catch (Exception e) { e.printStackTrace(); } return check; } /** * 簡體轉換為繁體 * @param pinYinStr * @return */ public String changeToTraditional(String pinYinStr){ String tempStr = null; try { tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 繁體轉換為簡體 * @param pinYinSt * @return */ public String changeToSimplified(String pinYinSt){ String tempStr = null; try { tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt); } catch (Exception e) { e.printStackTrace(); } return tempStr; } // public static void main(String[] args) {// String str = "重慶 most input";// ChangeToPinYinJP jp = new ChangeToPinYinJP();// System.out.println(jp.changeToSimplified(str));// System.out.println(jp.checkPinYin(重));// }}

拼音轉換jar還有很多其他的功能,對項目實際是很有幫助的,這里只是簡單的介紹了下最基本的功能,有興趣的可以自行去了解。

TAGS標簽:  java  英文  字母  換成  數字  java將英文字母轉

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖