android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下

问题来源

在做地名按首字母排序的时候出现了这样一个bug。长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qing。于是排序出了问题。

汉字转拼音库和多音字识别库1.多音字对应的词汇库

2.文字的二进制大小对应的拼音库

关键代码

1.我在这里首先将要转化的文字转化成对应的”gb2312”编码。汉字转化成二进制编码一般占两个字节,如果一个字节返回字符,如果是两个字节算一下偏移量。代码如下

/** * 汉字转成ascii码 * * @param chs * @return */

private int getchsascii(string chs) {

int asc = 0;

try {

byte[] bytes = chs.getbytes("gb2312");

if (bytes == null || bytes.length > 2 || bytes.length <= 0) {

throw new runtimeexception("illegal resource string");

}

if (bytes.length == 1) {

asc = bytes[0];

}

if (bytes.length == 2) {

int hightbyte = 256 + bytes[0];

int lowbyte = 256 + bytes[1];

asc = (256 * hightbyte + lowbyte) - 256 * 256;

}

} catch (exception e) {

system.out.println("error:chinesespelling.class-getchsascii(string chs)" + e);

}

return asc;

}

2.将单个汉字获取的拼音再和多音字库的hashmap进行比较,代码如下:

public string getsellingwithpolyphone(string chs){

if(polyphonemap != null && polyphonemap.isempty()){

polyphonemap = initdictionary();

}

string key, value, resultpy = null;

buffer = new stringbuilder();

for (int i = 0; i < chs.length(); i++) {

key = chs.substring(i, i + 1);

if (key.getbytes().length >= 2) {

value = (string) convert(key);

if (value == null) {

value = "unknown";

}

} else {

value = key;

}

resultpy = value;

string left = null;

if(i>=1 && i+1 <= chs.length()){

left = chs.substring(i-1,i+1);

if(polyphonemap.containskey(value) && polyphonemap.get(value).contains(left)){

resultpy = value;

}

}

// if(chs.contains("重庆")){

string right = null; //向右多取一个字,例如 [长]沙

if(i<=chs.length()-2){

right = chs.substring(i,i+2);

if(polyphonemap.containskey(right)){

resultpy = polyphonemap.get(right);

}

}

// }

string middle = null; //左右各多取一个字,例如 龙[爪]槐

if(i>=1 && i+2<=chs.length()){

middle = chs.substring(i-1,i+2);

if(polyphonemap.containskey(value) && polyphonemap.get(value).contains(middle)){

resultpy = value;

}

}

string left3 = null; //向左多取2个字,如 芈月[传],列车长

if(i>=2 && i+1<=chs.length()){

left3 = chs.substring(i-2,i+1);

if(polyphonemap.containskey(value) && polyphonemap.get(value).contains(left3)){

resultpy = value;

}

}

string right3 = null; //向右多取2个字,如 [长]孙无忌

if(i<=chs.length()-3){

right3 = chs.substring(i,i+3);

if(polyphonemap.containskey(value) && polyphonemap.get(value).contains(right3)){

resultpy = value;

}

}

buffer.append(resultpy);

}

return buffer.tostring();

}

3.将asserts文件内容解析生成hashmap列表.

public hashmap initdictionary(){

string filename = "py4j.dic";

inputstreamreader inputreader = null;

bufferedreader bufferedreader = null;

hashmap polyphonemap = new hashmap();

try{

inputreader = new inputstreamreader(myapplication.mcontext.getresources().getassets().open(filename),"utf-8");

bufferedreader = new bufferedreader(inputreader);

string line = null;

while((line = bufferedreader.readline()) != null){

string[] arr = line.split(pinyin_separator);

if(isnotempty(arr[1])){

string[] dyzs = arr[1].split(word_separator);

for(string dyz: dyzs){

if(isnotempty(dyz)){

polyphonemap.put(dyz.trim(),arr[0]);

}

}

}

}

}catch(exception e){

e.printstacktrace();

}finally{

if(inputreader != null){

try {

inputreader.close();

} catch (ioexception e) {

// todo auto-generated catch block

e.printstacktrace();

}

}

if(bufferedreader != null){

try {

bufferedreader.close();

} catch (ioexception e) {

// todo auto-generated catch block

e.printstacktrace();

}

}

}

return polyphonemap;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

android 拼音检索汉字,android实现汉字转拼音功能 带多音字识别相关推荐

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

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

  2. android时钟秒针转动,TextView显示系统时间(时钟功能带秒针变化

    我们开启一个线程,线程每隔一秒发送一次消息,我们在消息中更新TextView上显示的时间就ok了. 首先我们在布局文件中放一个TextView用来显示时间,如下所示: xmlns:android=&q ...

  3. android全局检索文件,Android系统中基于FTS的全文检索器

    [实例简介] 通过Android系自带的FTS3全文检索表,实现对sd卡中的所有文件进行检索. [实例截图] [核心代码] b979e161-8581-4275-8412-59354acd4b0f └ ...

  4. Android 实现汉字转成拼音,实现ListView的A-Z字母排序,显现多音字城市排序

    Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 内容来源:http://blog.csdn.net/xiaanming/article/details/12684 ...

  5. android列表字母排序,Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音...

    [实例简介]Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 [实例截图] [核心代码] package com.example.sortlistview; imp ...

  6. Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排序;繁体 ...

  7. Android 利用AutoCompleteTextView实现模糊搜索功能,搜索结果自动提示,识别拼音首字母并转汉字提示

    这里说一下怎么利用 Android 的 AutoCompleteTextView 控件实现模糊搜索功能,AutoCompleteTextView 自带自动提示功能.如果 对自动提示的布局自定义要求比较 ...

  8. android 获取拼音首字母,Android开发 - 汉字转拼音首字母

    概述 工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1.获得汉字 2.将汉字转换成首字母,并记录下(必要时保存到数据库) 3.按首字母进行 ...

  9. 2kids学汉字 android,2Kids学汉字

    游戏介绍 2Kids学汉字是一款专注于宝宝汉字学习的平台,帮助学前班宝宝轻松汉字学习,可以通过讲故事的方式使得宝宝汉字学习更轻松,在故事学习的同时,不仅可以了解到更多故事内容,还可以学习到更多汉字知识 ...

  10. android图片上加有汉字,Android 为图片添加文字水印

    先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...

最新文章

  1. [PHP] PHP 格式化日期 format the datetime in PHP
  2. 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单
  3. 手机相机里面的m_荣耀V30 PRO详细评测:Matrix Camera相机矩阵开启5G视频时代
  4. 基础计算机b卷,计算机应用基础B卷.doc
  5. PS发光眩光效果插件:BBTools Glow Glare for Mac
  6. selenium动态网页爬虫复习
  7. Git 标签(tag)相关操作
  8. colordialog通过哪属性取其颜色_IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值1...
  9. 反向传播算法(backpropagation)
  10. No.025:Reverse Nodes in k-Group
  11. 进销存数据库设计 For MysQL
  12. 三因子两水平doe_minitab doe 操作说明 范例 全因子实验设计法3 因子2 水平实验设计.pdf...
  13. zuc算法代码详解_ZUC算法原理及实现过程[共3页]
  14. 2020年如何利用外链提升网站排名和权重?
  15. 【操作系统-Windows】杀毒软件工作原理 及 现在主要杀毒技术
  16. Java 使用poi自定义下载Excel模板
  17. html svg文件怎么打开,SVG 在 HTML 页面
  18. WLW离线编辑器的安装与使用
  19. MISC相关工具下载
  20. 2021-2025年中国InGaAs光电二极管及阵列行业市场供需与战略研究报告

热门文章

  1. 微带贴片天线谐振边为什么是半波长?
  2. Discarding previously cached master state
  3. 利用Blast比对基因
  4. 上海职业学校计算机证书查询,证书查询
  5. php mocking,php – Mocking Static Eloquent Models方法包括find()
  6. 英文版红帽linux设置屏保,Linux下屏保设置
  7. vue 嵌套表格组件_vue+element-ui实现嵌套表格导出
  8. JWT signature does not match locally computed signature. JWT validity cannot be asserted and should
  9. 离散数学——哈斯图,最大最小值,极大极小值,上界和下界
  10. 无线网卡驱动正常却搜索不到无线信号