/**
* 汉字转换为拼音 包含多音字,包含生母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]

通过pinyin4j将汉字转换为全拼 和 拼音首字母的更多相关文章

  1. JAVA将汉字转换为全拼以及返回中文的首字母,将字符串转移为ASCII码

    import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...

  2. 【Java】使用pinyin4j获取汉字的全拼或首字母

    汉字转拼音的工具类,常用于做汉字拼音的模糊查询. https://www.cnblogs.com/htyj/p/7891918.html

  3. C# 获取汉字的拼音首字母和全拼(含源码)

    C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...

  4. oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)

        oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)   效果如下: Oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下   Sql代码   --oracle汉字转拼 ...

  5. C# 获取汉字拼音首字母/全拼

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

  6. vue 获取汉字的全拼、简拼、首拼

    1.封装公共方法,获取汉字的全拼.简拼.首拼 export const Pinyin = { _JMcode:{ "-":"", "—":& ...

  7. c#汉字转拼音首字母全拼支持多音字

    1.首先在NuGet安装pingyinConverter 2.下载-安装-引用ChineseChar.dll到项目中 官网了解:http://www.microsoft.com/zh-cn/downl ...

  8. js汉语转拼音(全拼、首字母、拼音首字母)

    新建js文件first_alphabet.js // JavaScript Document // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell //函数使 ...

  9. C#将汉字转换成全拼的拼音EcanConvertToCh帮助类 (转)

    点击下载 EcanConvertToCh.rar 主要功能就是将汉字转换成全拼的拼音,只要你输入一个汉字就会相应的转成拼音 /// <summary> /// 编 码 人:苏飞 /// 联 ...

随机推荐

  1. vim插件开发初步

    [vim插件开发初步] 将如下代码存在helloworld.vim, 放在~/.vim/plugin目录下,插件即可生效.:w保存代码后, 用:source命令执行后,也可以使用Helloworld命 ...

  2. ESB服务号列表

    用于以下两个网址: -浙商ESB调用规范- xml格式 -浙商ESB调用规范- json格式   ESB服务号<SERVICE_NO>{serviceNo} 接口中文意思 42000000 ...

  3. mac多版本python安装 pymysql

    系统里面安装了多个python的版本,有2.7和3.4等.默认的2.7版本,但我开发需要3.4版本的. 默认情况下,用pip安装PyMySQL $sudo pip install PyMySQL 安装 ...

  4. HDOJ_1010 Tempter of the Bone

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 奇偶剪枝:可以把map看成这样: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 ...

  5. CSS学习篇核心之——盒子模型

    概述 关于CSS的一些基础知识我们在前面文章中已经有所了解,这篇文章我们主要来学习下CSS中的核心知识盒子模型的知识. 盒子模型 元素框的最内部分是实际的内容(element),直接包围内容的是内边距 ...

  6. [置顶] Linux信号相关笔记

    最近又温习了一遍Linux中的信号知识,发现有很多东西以前没有注意到,就通过这篇博客记录一下,巩固一下知识点. 一,信号基础: 信号是什么?为了回答这个问题,首先要从异常说起,这里的异常不是指c++/ ...

  7. perl学习笔记(2)

    1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7. ...

  8. HTML5 Web Speech API 结合Ext实现浏览器语音识别以及输入

    简介      Web Speech API是HTML5技术中的一个提供原生语音识别技术的API,Google Chrome在25版之后开始支持Web Speech API,Google也提供了一个 ...

  9. git status对应中文名称

    git status显示出来的中文文档是一串字符码,不能正常识别 git config --global core.quotepath false 这一句代码就可以帮你

  10. 4.3、Libgdx启动类和配置

    (原文:http://www.libgdx.cn/topic/45/4-3-libgdx%E5%90%AF%E5%8A%A8%E7%B1%BB%E4%B8%8E%E9%85%8D%E7%BD%AE) ...