前言:
今天姐妹们对“java生成汉字”都比较关怀,朋友们都需要剖析一些“java生成汉字”的相关内容。那么小编也在网络上搜集了一些对于“java生成汉字””的相关文章,希望小伙伴们能喜欢,你们一起来学习一下吧!Java开源类库Pinyin4j
Pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库;地址:
功能:
1、支持同一汉字有多个发音。
2、还支持拼音的格式化输出,比如第几声之类的。
3、同时支持简体中文、繁体中文转换为拼音,使用起来也非常简单。
代码案例
pom.xml
<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version></dependency>
package com.what21.demo.pinyin4j;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;public class Pinyin4jDemo01 { public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination { HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 控制大小写 // UPPERCASE:大写 (ZHONG) // LOWERCASE:小写 (zhong) defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); // WITHOUT_TONE:无音标 (zhong) // WITH_TONE_NUMBER:1-4数字表示英标 (zhong4) // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng) defaultFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); // WITH_V:用v表示ü (nv) // WITH_U_AND_COLON:用"u:"表示ü (nu:) // WITH_U_UNICODE:直接用ü (nü) defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); // oHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。 // 《甄嬛传》 String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('嬛', defaultFormat); for (String str : pinyin) { System.out.println(str); } }}
package com.what21.demo.pinyin4j;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 Pinyin4jDemo11 { /** * @param chines * @return */ public static String getPinYinHeadChar(String chines) { String convert = ""; for (int i = 0; i < chines.length(); i++) { char word = chines.charAt(i); // 先判断其是否是汉字 if (String.valueOf(word).matches("[\\u4E00-\\u9FA5]+")) { //提取汉字的首字母 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } } return convert; } /** * 获得汉语拼音首字母 * * @param chines 汉字 * @return */ public static String getPinYinHeadChar2(String chines) { String pinyinName = ""; char[] nameChar = chines.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < nameChar.length; i++) { if (nameChar[i] > 128) { try { pinyinName += PinyinHelper.toHanyuPinyinStringArray( nameChar[i], defaultFormat)[0].charAt(0); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { pinyinName += nameChar[i]; } } return pinyinName; } public static void main(String[] args) { // nh System.out.println(getPinYinHeadChar("a1你好12")); // NH System.out.println(getPinYinHeadChar("a1你好12").toUpperCase()); // a1NH12 System.out.println(getPinYinHeadChar2("a1你好12")); // A1NH12 System.out.println(getPinYinHeadChar2("a1你好12").toUpperCase()); }}
package com.what21.demo.pinyin4j;import net.sourceforge.pinyin4j.PinyinHelper;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;public class Pinyin4jDemo12 { private static HanyuPinyinOutputFormat PINYIN_FORMAT; static { PINYIN_FORMAT = new HanyuPinyinOutputFormat(); PINYIN_FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); PINYIN_FORMAT.setVCharType(HanyuPinyinVCharType.WITH_V); } public static String toPinyin(String input) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c <= 255) { sb.append(c); } else { String pinyin = null; try { String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT); pinyin = pinyinArray[0]; } catch (BadHanyuPinyinOutputFormatCombination e) { } catch (NullPointerException e) { // 如果是日文,可能抛出该异常 } if (pinyin != null) { sb.append(pinyin); } } } return sb.toString(); } public static void main(String[] args) { String str = "a1你好12"; String result = toPinyin(str); // a1nihao12 System.out.println(result); }}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java生成汉字