通过pinyin4j将汉字转换为全拼 和 拼音首字母
2014-08-06 17:28
323 查看
/** * 汉字转换为拼音 包含多音字,包含生母zh,ch,sh的 */ public void toPinYinAll(){ String initials = "zh,ch,sh"; //返回汉语拼音的全拼 List<String> result = new ArrayList<String>(); //返回汉语拼音的单拼 List<String> firstResult = new ArrayList<String>(); result.add(""); firstResult.add(""); String text = "我重情长"; char[] t1 = null; t1 = text.toCharArray(); //设置汉字拼音的输出格式 HanyuPinyinOutputFormat hf = new HanyuPinyinOutputFormat(); //设置输出类型为小写 hf.setCaseType(HanyuPinyinCaseType.LOWERCASE); //设置音标类型为无音标 hf.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //设置 吕中u转换为v hf.setVCharType(HanyuPinyinVCharType.WITH_V); StringBuilder sb = new StringBuilder(); for(char c : t1){ //判断是否是汉字 if(Character.toString(c).matches("[\\u4E00-\\u9FA5]+")){ try { String[] t2 = PinyinHelper.toHanyuPinyinStringArray(c, hf); //去掉 多音词中 拼音相同 声调不同的重复拼音 Set<String> set = new HashSet<String>(); set.addAll(Arrays.asList(t2)); t2 = set.toArray(new String[0]); if(t2!=null && t2.length>1){ List<String> temp = new ArrayList<String>(); List<String> firstTemp = new ArrayList<String>(); temp.addAll(result); firstTemp.addAll(firstResult); for(int i=0;i<t2.length;i++){ int n = result.size(); String token = t2[i]; String firstToken = ""+token.charAt(0); if(initials.contains(token.substring(0, 2))){ firstToken = token.substring(0, 2); } if(i==0){ for(int j=0;j<n;j++){ String s = result.get(j); result.remove(j); result.add(j, s+token); String fs = firstResult.get(j); firstResult.remove(j); firstResult.add(j, fs+firstToken); } }else{ for(int j=0;j<n;j++){ String s = temp.get(j); temp.remove(j); temp.add(j, s+token); String fs = firstTemp.get(j); firstTemp.remove(j); firstTemp.add(j, fs+firstToken); } result.addAll(temp); firstResult.addAll(firstTemp); } } }else{ int n = result.size(); for(int i=0;i<n;i++){ String s = result.get(i); result.remove(i); result.add(i, s+t2[0]); String firstToken = ""+t2[0].charAt(0); if(initials.contains(t2[0].substring(0, 2))){ firstToken = t2[0].substring(0, 2); } String fs = firstResult.get(i); firstResult.remove(i); firstResult.add(i, fs+firstToken); } } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } }else{ int n = result.size(); for(int i=0;i<n;i++){ String s = result.get(i); result.remove(i); result.add(i,s+String.valueOf(c)); } } } System.out.println(result.toString()); System.out.println(firstResult.toString()); }
结果:
[wozhongqingzhang, wochongqingzhang, wozhongqingchang, wochongqingchang]
[wzhqzh, wchqzh, wzhqch, wchqch]
相关文章推荐
- c#将中文转换成拼音,以空格隔开,全拼,获取汉字首字母,PinyinHelper
- C#,获得汉字的全拼,不只是首个字母,含声母和韵母,汉字转拼音(全拼)
- Java下将汉字转换为拼音的包pinyin4j
- 汉字转换成拼音,拼音转换成汉字,字母边界之间汉字,取汉字拼音首字母的存储过程
- Javascript输入汉字自动转换为首字母的拼音码【原创】
- sql函数-把汉字首字母转换为拼音
- Java下将汉字转换为拼音的包pinyin4j
- 用C#写的将汉字转换为拼音首字母
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Javascript输入汉字自动转换为首字母的拼音码
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- Java下将汉字转换为拼音的包pinyin4j
- 把我们的汉字转换成为以拼音首字母的关键字的方法
- asp.net 自动将汉字转换成拼音第一个字母