区域数据导入功能(pinyin4J使用)
生活随笔
收集整理的這篇文章主要介紹了
区域数据导入功能(pinyin4J使用)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
pinyin4J
<!-- 引入pinyin4J的依賴 --> <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version> </dependency>?
@Testpublic void test1(){//河北省 石家莊市 橋西區String province = "河北省";String city = "石家莊市";String district = "橋西區";//簡碼---->>HBSJZQXprovince = province.substring(0, province.length() - 1);city = city.substring(0, city.length() - 1);district = district.substring(0, district.length() - 1);String info = province + city + district;String[] headByString = PinYin4jUtils.getHeadByString(info);String shortcode = StringUtils.join(headByString);System.out.println(shortcode);//城市編碼---->>shijiazhuangString citycode = PinYin4jUtils.hanziToPinyin(city, "");System.out.println(citycode);} package com.learn.bos.utils;import java.util.Arrays;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.exception.BadHanyuPinyinOutputFormatCombination;public class PinYin4jUtils {/*** 將字符串轉換成拼音數組* * @param src* @return*/public static String[] stringToPinyin(String src) {return stringToPinyin(src, false, null);}/*** 將字符串轉換成拼音數組* * @param src* @return*/public static String[] stringToPinyin(String src, String separator) {return stringToPinyin(src, true, separator);}/*** 將字符串轉換成拼音數組* * @param src* @param isPolyphone* 是否查出多音字的所有拼音* @param separator* 多音字拼音之間的分隔符* @return*/public static String[] stringToPinyin(String src, boolean isPolyphone,String separator) {// 判斷字符串是否為空if ("".equals(src) || null == src) {return null;}char[] srcChar = src.toCharArray();int srcCount = srcChar.length;String[] srcStr = new String[srcCount];for (int i = 0; i < srcCount; i++) {srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);}return srcStr;}/*** 將單個字符轉換成拼音* * @param src* @return*/public static String charToPinyin(char src, boolean isPolyphone,String separator) {// 創建漢語拼音處理類HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 輸出設置,大小寫,音標方式defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);StringBuffer tempPinying = new StringBuffer();// 如果是中文if (src > 128) {try {// 轉換得出結果String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,defaultFormat);// 是否查出多音字,默認是查出多音字的第一個字符if (isPolyphone && null != separator) {for (int i = 0; i < strs.length; i++) {tempPinying.append(strs[i]);if (strs.length != (i + 1)) {// 多音字之間用特殊符號間隔起來tempPinying.append(separator);}}} else {tempPinying.append(strs[0]);}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {tempPinying.append(src);}return tempPinying.toString();}public static String hanziToPinyin(String hanzi) {return hanziToPinyin(hanzi, " ");}/*** 將漢字轉換成拼音* * @param hanzi* @param separator* @return*/public static String hanziToPinyin(String hanzi, String separator) {// 創建漢語拼音處理類HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 輸出設置,大小寫,音標方式defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String pinyingStr = "";try {pinyingStr = PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat,separator);} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO Auto-generated catch blocke.printStackTrace();}return pinyingStr;}/*** 將字符串數組轉換成字符串* * @param str* @param separator* 各個字符串之間的分隔符* @return*/public static String stringArrayToString(String[] str, String separator) {StringBuffer sb = new StringBuffer();for (int i = 0; i < str.length; i++) {sb.append(str[i]);if (str.length != (i + 1)) {sb.append(separator);}}return sb.toString();}/*** 簡單的將各個字符數組之間連接起來* * @param str* @return*/public static String stringArrayToString(String[] str) {return stringArrayToString(str, "");}/*** 將字符數組轉換成字符串* * @param str* @param separator* 各個字符串之間的分隔符* @return*/public static String charArrayToString(char[] ch, String separator) {StringBuffer sb = new StringBuffer();for (int i = 0; i < ch.length; i++) {sb.append(ch[i]);if (ch.length != (i + 1)) {sb.append(separator);}}return sb.toString();}/*** 將字符數組轉換成字符串* * @param str* @return*/public static String charArrayToString(char[] ch) {return charArrayToString(ch, " ");}/*** 取漢字的首字母* * @param src* @param isCapital* 是否是大寫* @return*/public static char[] getHeadByChar(char src, boolean isCapital) {// 如果不是漢字直接返回if (src <= 128) {return new char[] { src };}// 獲取所有的拼音String[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);// 創建返回對象int polyphoneSize = pinyingStr.length;char[] headChars = new char[polyphoneSize];int i = 0;// 截取首字符for (String s : pinyingStr) {char headChar = s.charAt(0);// 首字母是否大寫,默認是小寫if (isCapital) {headChars[i] = Character.toUpperCase(headChar);} else {headChars[i] = headChar;}i++;}return headChars;}/*** 取漢字的首字母(默認是大寫)* * @param src* @return*/public static char[] getHeadByChar(char src) {return getHeadByChar(src, true);}/*** 查找字符串首字母* * @param src* @return*/public static String[] getHeadByString(String src) {return getHeadByString(src, true);}/*** 查找字符串首字母* * @param src* @param isCapital* 是否大寫* @return*/public static String[] getHeadByString(String src, boolean isCapital) {return getHeadByString(src, isCapital, null);}/*** 查找字符串首字母* * @param src* @param isCapital* 是否大寫* @param separator* 分隔符* @return*/public static String[] getHeadByString(String src, boolean isCapital,String separator) {char[] chars = src.toCharArray();String[] headString = new String[chars.length];int i = 0;for (char ch : chars) {char[] chs = getHeadByChar(ch, isCapital);StringBuffer sb = new StringBuffer();if (null != separator) {int j = 1;for (char ch1 : chs) {sb.append(ch1);if (j != chs.length) {sb.append(separator);}j++;}} else {sb.append(chs[0]);}headString[i] = sb.toString();i++;}return headString;}public static void main(String[] args) {// pin4j 簡碼 和 城市編碼 String s1 = "中華人民共和國"; String[] headArray = getHeadByString(s1); // 獲得每個漢字拼音首字母System.out.println(Arrays.toString(headArray));String s2 ="長城" ; System.out.println(Arrays.toString(stringToPinyin(s2,true,",")));String s3 ="長";System.out.println(Arrays.toString(stringToPinyin(s3,true,",")));} }?
?
?
總結
以上是生活随笔為你收集整理的区域数据导入功能(pinyin4J使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区域数据导入功能(POI使用方式)
- 下一篇: 分区数据导出功能(页面调整)