android 拼音检索汉字,android实现汉字转拼音功能 带多音字识别
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实现汉字转拼音功能 带多音字识别相关推荐
- android 汉字转字节,android实现汉字转拼音功能 带多音字识别
android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...
- android时钟秒针转动,TextView显示系统时间(时钟功能带秒针变化
我们开启一个线程,线程每隔一秒发送一次消息,我们在消息中更新TextView上显示的时间就ok了. 首先我们在布局文件中放一个TextView用来显示时间,如下所示: xmlns:android=&q ...
- android全局检索文件,Android系统中基于FTS的全文检索器
[实例简介] 通过Android系自带的FTS3全文检索表,实现对sd卡中的所有文件进行检索. [实例截图] [核心代码] b979e161-8581-4275-8412-59354acd4b0f └ ...
- Android 实现汉字转成拼音,实现ListView的A-Z字母排序,显现多音字城市排序
Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 内容来源:http://blog.csdn.net/xiaanming/article/details/12684 ...
- android列表字母排序,Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音...
[实例简介]Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音 [实例截图] [核心代码] package com.example.sortlistview; imp ...
- Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序
发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排序;繁体 ...
- Android 利用AutoCompleteTextView实现模糊搜索功能,搜索结果自动提示,识别拼音首字母并转汉字提示
这里说一下怎么利用 Android 的 AutoCompleteTextView 控件实现模糊搜索功能,AutoCompleteTextView 自带自动提示功能.如果 对自动提示的布局自定义要求比较 ...
- android 获取拼音首字母,Android开发 - 汉字转拼音首字母
概述 工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1.获得汉字 2.将汉字转换成首字母,并记录下(必要时保存到数据库) 3.按首字母进行 ...
- 2kids学汉字 android,2Kids学汉字
游戏介绍 2Kids学汉字是一款专注于宝宝汉字学习的平台,帮助学前班宝宝轻松汉字学习,可以通过讲故事的方式使得宝宝汉字学习更轻松,在故事学习的同时,不仅可以了解到更多故事内容,还可以学习到更多汉字知识 ...
- android图片上加有汉字,Android 为图片添加文字水印
先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...
最新文章
- [PHP] PHP 格式化日期 format the datetime in PHP
- 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单
- 手机相机里面的m_荣耀V30 PRO详细评测:Matrix Camera相机矩阵开启5G视频时代
- 基础计算机b卷,计算机应用基础B卷.doc
- PS发光眩光效果插件:BBTools Glow Glare for Mac
- selenium动态网页爬虫复习
- Git 标签(tag)相关操作
- colordialog通过哪属性取其颜色_IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值1...
- 反向传播算法(backpropagation)
- No.025:Reverse Nodes in k-Group
- 进销存数据库设计 For MysQL
- 三因子两水平doe_minitab doe 操作说明 范例 全因子实验设计法3 因子2 水平实验设计.pdf...
- zuc算法代码详解_ZUC算法原理及实现过程[共3页]
- 2020年如何利用外链提升网站排名和权重?
- 【操作系统-Windows】杀毒软件工作原理 及 现在主要杀毒技术
- Java 使用poi自定义下载Excel模板
- html svg文件怎么打开,SVG 在 HTML 页面
- WLW离线编辑器的安装与使用
- MISC相关工具下载
- 2021-2025年中国InGaAs光电二极管及阵列行业市场供需与战略研究报告
热门文章
- 微带贴片天线谐振边为什么是半波长?
- Discarding previously cached master state
- 利用Blast比对基因
- 上海职业学校计算机证书查询,证书查询
- php mocking,php – Mocking Static Eloquent Models方法包括find()
- 英文版红帽linux设置屏保,Linux下屏保设置
- vue 嵌套表格组件_vue+element-ui实现嵌套表格导出
- JWT signature does not match locally computed signature. JWT validity cannot be asserted and should
- 离散数学——哈斯图,最大最小值,极大极小值,上界和下界
- 无线网卡驱动正常却搜索不到无线信号