摩擦实用汉字转拼音检查拼音怎么拼?

汉语拼音教案全集_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
汉语拼音教案全集
分​享​汉​语​拼​音​教​案
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢
20080份文档如何教好汉语拼音
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
等级: 初级会员
来自: 广州
发表时间:&&
最后修改:
本程序是把输入的字符串转化为以空格间隔的拼音串,
如输入“zhongguoren",则会输出“zhong guo ren".
另外程序也利用了Pinyin4j.jar的包,处理开始时先把中文汉字转化为拼音(但对多音字支持不好,如:银行--&yin xing),先不管这个问题。
说白本程序就是把输入的英文字符串,按照拼音规则分割,不过其中也遇到一些问题,现在记录下来。其实网上我也找过,不过就是没实现出来。
第一种做法:把拼音字典从a ai an ang一直往下读入内存(其实共407个拼音而已),对字符串,从长度为1开始至字符串末尾,不断截取,在拼音字典内二分查找,
若存在,则连接下个字符,继续在拼音字典内二分查找;
若不存在,则证明这是拼音的最大匹配了,就作为结果保存;
直到字符串结束。
(测试多次后发现有bug,bug 1: deng,xiong这类拼音不能识别,加了判断ng结尾(已修正);
bug 2: 对tian这个拼音识别成: ti
an两个拼音。
本人觉得如果再加判断就会显得很难看。所以放弃这种做法。
其中pinyinDict的数据结构是String[]. DictOper.readDict()方法是读文件,并把每一行转化String,最终返回String数组。
拼音字典文件格式如下:
代码如下:
* 通过拼音字典,二分查找是否存在拼音&br/&
* 贪婪算法,最大匹配拼音序列, bug: tiantian会分成ti an ti an
* @param inputChar
* @author chow
上午10:58:22
@Deprecated
public String _processString(char[] inputChar) {
String temp = new String(inputChar);
String[] strArray = temp.split(" ");
StringBuffer result = new StringBuffer();
if (pinyinDict == null || pinyinDict.length &= 0) {
pinyinDict = DictOper.readPYDict();
for (int i = 0; i & strArray. i++) {
String curStr = strArray[i];
int curStrLen = curStr.length();
boolean existWord =
for (int beginIndex = 0, endIndex = 1; endIndex &= curStrL endIndex++) {
String tmpKey = curStr.substring(beginIndex, endIndex);
int index = Arrays.binarySearch(pinyinDict, tmpKey);
// int gap = endIndex - beginI
if (index &= 0) { // 存在,则继续找下个字符
if (endIndex == curStrLen) {
result.append(tmpKey + " ");
} else if (endIndex + 2 &= curStrLen
&& curStr.substring(endIndex, endIndex + 2).equals(
// 若后面两个字母是ng,则接上去
result.append(curStr
.substring(beginIndex, endIndex + 2)
beginIndex = endIndex + 2;
endIndex = beginI
existWord =
existWord =
// 不存在且前面一个字符是存在的
else if (existWord) {
result.append(curStr.substring(beginIndex, --endIndex));
result.append(" ");
beginIndex = endI
existWord =
// System.out.println("result:" + result.toString());
return result.toString();
第二种做法:
改变拼音字典的数据结构,采用Map&String, List&的格式,如下:
a:[a, ai, an, ang, ao]
b:[ba, bai, ban, bang, bao, bei, ben, beng, bi, bian, biao, bie, bin, bing, bo, bu]
程序的思想是:从字符串的第一个字符开始,若字符在字典里存在,则取出其对应的拼音串,并从该字符往后截取1个至5个字符,
(如:输入tianxia,第一个字符为't',则取出t:[ta, tai, tan, tang, tao, te, tei, teng, ti, tian, tiao, tie, ting, tong, tou, tu, tuan, tui, tun, tuo],
并截取t, ti, tia, tian, tianx, tianxi 六组字符串,取出最长一个匹配串[tian],将结果保存,从'tian'的'n'后一个字符开始循环,直至到字符串结束。
* 根据Map查找是否存在对应的拼音&br/&
* 贪婪算法,最大匹配拼音序列
* @param inputChar
* @return 以空格间隔的拼音字符串,eg: zhong guo ren
* @author chow
上午11:00:07
public String _processStringByMap(char[] inputChar) {
String temp = new String(inputChar);
temp = PinyinHelper.toHanyuPinyinString(temp, outputFormat, "");
String[] strArray = temp.split(" ");
StringBuffer result = new StringBuffer();
if (pyData == null) {
pyData = DictOper.getPYData();
for (int i = 0; i & strArray. i++) {
String curStr = strArray[i];
int curStrLen = curStr.length();
int beginIndex = 0, nextWordIndex = 0;
while (beginIndex & curStrLen) {
String firstLetter = curStr.substring(beginIndex,
beginIndex + 1);
List&String& list = pyData.get(firstLetter);
if (list == null) {
beginIndex += 1;
nextWordIndex = beginI
for (int subLen = 1; subLen &= 6; subLen++) {
if (beginIndex + subLen & curStrLen) {
String piece = curStr.substring(beginIndex, beginIndex
+ subLen);
if (list.contains(piece)) {
nextWordIndex = subLen + beginI
// 若不存在任何匹配,begin和next都向后移一位
if (nextWordIndex == beginIndex) {
beginIndex += 1;
nextWordIndex = beginI
String subStr = curStr.substring(beginIndex, nextWordIndex);
result.append(subStr + " ");
beginIndex = nextWordI
if (result.length() == 0) {
result.append(temp);
return result.toString();
做法二可以很好识别拼音串,但回头想想,其实程序还可以优化。
因为每个拼音字母可以组成的拼音的长度范围是可预见的。就是说以't'开头的拼音最短为长度为2(eg: ta),最长为4(eg: tian);
这时只要改变拼音字典的数据结构就可以了,写个程序统计一下各个拼音最长和最短的长度,更改后的拼音字典为:
a:[a, ai, an, ang, ao]
min:1,max:3
b:[ba, bai, ban, bang, bao, bei, ben, beng, bi, bian, biao, bie, bin, bing, bo, bu]
min:2,max:4
对于min和max可以用Map&String,Integer[]& pyLenMap保存,
for (int subLen = 1; subLen &= 6; subLen++) {
if (beginIndex + subLen & curStrLen) {
对于上面的for循环内的1与6可换成pyLenMap的min和max。
这样程序循环的次数就能更少。
另外附上拼音字典。
(718 Bytes)
下载次数: 127
来自: Germany
发表时间:&&
不错,很实用的一个东西。
请登录后投票
lovefeng01
等级: 初级会员
来自: 吉林
发表时间:&&
确实不错,希望lz继续完善。
请登录后投票
等级: 初级会员
来自: 深圳
发表时间:&&
怎么会是二分查找,应该是树结构才对。
请登录后投票
AllenZhang
等级: 初级会员
来自: 上海
发表时间:&&
算法和分词算法是完全一样的。。。。。。。事实上也就是分词一样无法回避歧义。比如xian 和 xi an
请登录后投票
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术当前位置:&&&&&&按拼音找症状如何取消WPS表格的拼音检查_百度知道
如何取消WPS表格的拼音检查
提问者采纳
在排序中,设置关键字为人名
其他类似问题
您可能关注的推广
wps表格的相关知识
按默认排序
其他4条回答
选项-拼写-总提出更正建议前面的勾选去掉
在选项中操作既可
貌似取消不了
电脑键盘常见故障维修与维护方法大全  由于整个机械式键盘是安装在一整块印刷板电路上的,要取下一个按键,特别是里层的按键,操作比较麻烦的事。键盘在使用过程中,若按某键失效或反应迟钝,此时即使用力敲打键盘也无济于事,所以必须及时进行修理。下面介绍一下拆御顺序及方法:   一、键盘常见故障维修   键盘在使用过程中,故障的表现形式是多种多样的,原因也是多方面的。有接触不良故障,有按键本身的机械故障,还有逻辑电路故障、虚焊、假焊、脱焊和金属孔氧化等故障.维修时要根据不同的故障现象进行分析判断,找出产生故障原因,进行相应的修理。
1、某些字符不能输入。若只有某一个键字符不能输入,则可能是该按键失效或焊点虚焊。检查时,按照上面叙述的方法打开键盘,用万用表电阻档测量接点的通断状态。若键按下时始终不导通,则说明按键簧片疲劳或接触不良,需要修理或更换;若键按下时接点通断正常,说明可能是因虚焊、脱焊或金屑孔氧化所致,可沿着印刷线路逐段测量,找出故障进行重焊;若因金属孔氧化而失效,可将氧化层清洗干净,然后重新焊牢;若金属孔完全脱落而造成断路时,可另加焊引线进行连接。   2、键盘上一些键,如空格键、回车键不起作用,有时,需按无数次才输入—个或两个字符,有的键,如光标键按下后不再起来,屏幕上光标连续移动,此时键盘其它字符不能输入,需再按一次才能弹起来。   这种故障为键盘的“卡键”故障,不仅仅是使用很久的旧键盘,有个别没用多久的新键盘上,键盘的卡键故障也有时发生。出现键盘的卡键现象主要由以下两个原因造成的:一种原因就是键帽下面的插柱位置偏移,使得键帽按下后与键体外壳卡住不能弹起而造成了卡键,此原因多发生在新键盘或使用不久的键盘上。
另一个原因就是按键长久使用后,复位弹簧弹性变得很差,弹片与按杆摩擦力变大,不能使按键弹起而造成卡键,此种原因多发生在长久使用的键盘上。当键盘出现卡键故障时,可将键帽拨下,然后按动按杆。若按杆弹不起来或乏力,则是由第二种原因造成的,否则为第一种原因所致。
若是由于键帽与键体外壳卡住的原因造成“卡键”故障,则可在键帽与键体之间放一个垫片,该垫片可用稍硬一些的塑料(如废弃的软磁盘外套)做成,其大小等于或略大于键体尺寸,并且在按杆通过的位置开一个可使铵杆自由通过的方孔,将其套在按杆上后,插上键帽;用此垫片阻止键帽与键体卡住,即可修复故障按键;若是由于弹簧疲劳,弹片阻力变大的原因造成卡键故障,这时可特键体打开,稍微拉伸复位弹簧使其恢复弹性;取下弹片将键体恢复。通过取下弹片,减少按杆弹起的阻力,从而使故障按键得到了恢复。     3、若有多个既不在同一列,也不在同一行的按键都不能输入,则可能是列线或行线某处断路,或者可能是逻辑门电路产生故障。这时可用100MHz的高频示波器进行检测,找出故障器件虚焊点,然后进行修复。   4、键盘输入与屏幕显示的字符不一致。此种故障可能是由于电路板上产生短路现象造成的,其表现是按这一键却显示为同一列的其他字符,此时可用万用表或示波器进行测量,确定故障点后进行修复。   5、按下一个键产生一串多种字符,或按键时字符乱跳,这种现象是由逻辑电路故障造成的。先选中某一列字符,若是不含回车键的某行某列,有可能产生多个其他字符现象;若是含回车键的一列,将会产生字符乱跳且不能最后进入系统的现象,用示波器检查逻辑电路芯片,找出故障芯片后更换同型号的新芯片,排除故障  二、键盘的拆卸与基本维护:   1、翻转键盘,将原来卡住的底板用锣丝刀往左右方向敲击。拆下键盘外壳,取出整个键盘,将键帽拔出。  2、用电烙铁将按键的焊角从印刷电路板上焊掉,使开关和印刷电路板脱离(电铬铁应有良好的接地,以防将键盘逻辑器件击穿)。   3、用镊子将按键两边的定位片向中间靠拢,轻轻从下面一顶,按键便能从定位铁中取出.   4、取下键杆,拿下弹簧和簧片,用无水酒精或四氯化碳等清洗液将链杆、键帽、弹簧和簧片上的灰尘和污垢清除干净,用风扇吹干或放通风处风干。   5、若簧片产生裂纹或已断裂,则应予以更换;若簧片完好,而弹力不足时,可将其折弯部位再轻轻折弯一些,以便增强对接触簧片的压力。   6、装好簧片、弹簧和键杆,将按键插入原位置,使焊角插入焊孔并露出尖端部分,用电烙铁将其与焊孔焊牢,装上键帽即可。
6:44:13xcqlgjnqsevo亍y瑭bㄑhЮ
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 搜狗拼音输入法 的文章

 

随机推荐