实现汉字转拼音支持一词多音

源码下载地址:http://download.csdn.net/detail/u014657752/9071427

结果如图:

该项目需要使用到jar包,jar包在源码项目里面;
布局代码:
activity_main.xml
<span style="font-family:KaiTi_GB2312;font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv"android:textSize="30sp"android:layout_centerVertical="true"android:layout_centerHorizontal="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /><EditTextandroid:textSize="30sp"android:layout_below="@+id/tv"android:id="@+id/et"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:layout_centerVertical="true"android:layout_centerHorizontal="true"android:layout_below="@+id/et"android:onClick="click"android:text="开始转换"android:layout_width="match_parent"android:layout_height="wrap_content" /></RelativeLayout>
</span>

Pinyin.java

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.example.yu_longji.android29;/*** Created by yu_longji on 2015/9/1.*/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;import java.util.HashSet;
import java.util.Set;/*** Created by yu_longji on 2015/8/31.*/
public class Pinyin {public static String makeStringByStringSet(Set<String> stringSet) {StringBuilder str = new StringBuilder();int i = 0;for (String s : stringSet) {if (i == stringSet.size() - 1) {str.append(s);} else {str.append(s + ",");}i++;}return str.toString().toLowerCase();}/*** 获取拼音集合**/public static Set<String> getPinyin(String src) {if (src != null && !src.trim().equalsIgnoreCase("")) {char[] srcChar;srcChar = src.toCharArray();//汉语拼音格式输出类HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();//输出设置,大小写,音标方式等hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);String[][] temp = new String[src.length()][];for (int i = 0; i < srcChar.length; i++) {char c = srcChar[i];//是中文或者a-z或者A-Z转换拼音(我的需求,是保留中文或者a-z或者A-Z)if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {try {temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else if (((int) c >= 65 && (int) c <= 90) || ((int) c >= 97 && (int) c <= 122)) {temp[i] = new String[]{String.valueOf(srcChar[i])};} else {temp[i] = new String[]{""};}}String[] pingyinArray = Exchange(temp);Set<String> pinyinSet = new HashSet<String>();for (int i = 0; i < pingyinArray.length; i++) {pinyinSet.add(pingyinArray[i]);}return pinyinSet;}return null;}/*** 递归**/public static String[] Exchange(String[][] strJaggedArray) {String[][] temp = DoExchange(strJaggedArray);return temp[0];}/*** 递归**/private static String[][] DoExchange(String[][] strJaggedArray) {int len = strJaggedArray.length;if (len >= 2) {int len1 = strJaggedArray[0].length;int len2 = strJaggedArray[1].length;int newlen = len1 * len2;String[] temp = new String[newlen];int Index = 0;for (int i = 0; i < len1; i++) {for (int j = 0; j < len2; j++) {temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];Index++;}}String[][] newArray = new String[len - 1][];for (int i = 2; i < len; i++) {newArray[i - 1] = strJaggedArray[i];}newArray[0] = temp;return DoExchange(newArray);} else {return strJaggedArray;}}}</span>
MainActivity.java
<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.example.yu_longji.android29;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {TextView tv;EditText et;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView)findViewById(R.id.tv);et = (EditText)findViewById(R.id.et);}public void click(View view){String str =  et.getText().toString().trim();tv.setText(Pinyin.makeStringByStringSet(Pinyin.getPinyin(str)));}}
</span>

Android-实现汉字转拼音支持一词多音相关推荐

  1. android 汉字转字节,android实现汉字转拼音功能 带多音字识别

    android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...

  2. Java/Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  3. Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  4. Android输入汉字得到拼音

    前一段时间,研究Android的通讯录,在它的contacts2.db数据库中发现raw_contacts表中有sort_key这一列用于排序的汉语拼音等信息,就突然想到我们可以利用它得到汉字相应的拼 ...

  5. Android/Java汉字转拼音类及按A-Z排序方法

    在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...

  6. Android Studio 汉字转拼音

    今天上课的时候老师讲到了汉字转拼音的问题,感觉挺有意思的,就自己捣鼓了一下. 查阅了一些资料,发现java获取汉字的拼音,pinyin4j.jar这个库可以很好的解决此类问题,先是用Myeclipse ...

  7. Android中汉字转拼音的优化

    Android中一种高效省资源的汉字转拼音的实现 我在开发Android项目中经常会遇到汉字转拼音的需求,主要是一些按拼音排序,首字母本地搜索匹配的需求,这些需求的特点是这样的:不要求处理声调和多音字 ...

  8. android 将文字转换为拼音格式,android中将汉字转为拼音

    汉字转拼音,汉字转拼音首字母~ 下面的方法是在做项目的时候,从网上查了好久才得到的~虽然不是自己写的,但是也改的差不多了~放在这里供大家参考哈 http://download.csdn.net/det ...

  9. php 生僻字 拼音,PHP汉字转拼音(支持生僻字)

    namespace common\expand; /** * 基于PHP语言的汉语转拼音的类 * 兼容 UTF8.GBK.GB2312 编码,无须特殊处理 * 对中文默认返回拼音首字母缩写,其它字符不 ...

最新文章

  1. linux写文本命令,一天一个shell命令 linux文本操作系列-chmod命令用法
  2. C语言中的itoa和atoi函数的实现
  3. 21天学通python pdf-21天学通Python PDF百度网盘资源下载
  4. c语言uint赋值给int,如何在C#中将uint转换为int?
  5. Effective Java之覆盖equal时要遵守通用约定(八)
  6. 电子商务计算机网络安全技术教案,网络安全技术教案.pdf
  7. Apache版本兼容性问题
  8. 直播预告丨 PostgreSQL数据库安全体系介绍
  9. python模式匹配算法_【python算法书】单词模式匹配?
  10. java 正则 pattern 线程安全_(一)Java Pattern类----java正则
  11. [Python Study Notes]电池信息
  12. 第三章 Lambda 表达式
  13. 备份/恢复面临的问题与解决途径
  14. 手机浏览器扫一扫的花样玩法,识万物还能答疑翻译
  15. 「三代组装」使用Pilon对基因组进行polish
  16. “云边+端”三管齐下,“有蓉”数据库助力四川气象进入天擎时代
  17. 好佳居软装十大品牌 软装拥有与众不同的体验
  18. 【Linux系统】第5节 Linux增删改查常用命令及查看命令字帮助手册
  19. 基于c语言c8051f系列微控制器原理与应用,基于C语言C8051F系列微控制器原理与应用...
  20. ContextCapture Master 倾斜摄影测量实景三维建模技术

热门文章

  1. 【数据库】HIVE SQL索引及其使用
  2. 【LaTeX】IEEE模板中作者及单位命令使用
  3. C++ Json库ArduinoJson介绍及使用说明
  4. 大学生怎样做到实事求是
  5. 多国语言实时翻译工具Mate Translate中文版
  6. 内网服务器设置NAT123端口映射,方便外网连接;如何测试端口连通情况。
  7. scp修改服务器文件名称,scp删除服务器文件命令
  8. 如何使电脑彻底崩溃!!!!(不要干坏事哦)
  9. HTML5新特性:FileReader 和 FormData
  10. 免费送礼品裂变引流,利用赠送小礼物线下引流裂变