在js中如何实现自动获取汉字的五笔首字母?

JavaScript09

在js中如何实现自动获取汉字的五笔首字母?,第1张

在js中如何实现自动获取汉字的五笔首字母?

你的意思是不是,在页面如果打“z”,转换成汉字对应的一些字,然后再根据这些字,来查数据库,取的相关的数据?

这样麻烦。

一般都是在存数据的时候,就已经转换好了对应的拼音。

比如要存:张**

,在存入数据库的时生成一个对应的拼音:zhang**

,把这个也一起存了,汉字存汉字字段,拼音存拼音字段。

查找时输入z,就直接在拼音字段里查需要的数据。

如果表允许再增加字段,还是加个拼音的字段,查找时候方便,快捷。

网上找个汉字转换拼音的类,把数据处理一下,存进拼音字段里。

这个是汉字转拼音参考:

//参数,中文字符串

//返回值:拼音首字母串数组  

function makePy(str){  

if(typeof(str) != "string")  

throw new Error(-1,"函数makePy需要字符串类型参数!")  

var arrResult = new Array() //保存中间结果的数组  

for(var i=0,len=str.lengthi<leni++){  

//获得unicode码  

var ch = str.charAt(i)  

//检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理  

arrResult.push(checkCh(ch))  

}  

//处理arrResult,返回所有可能的拼音首字母串数组  

return mkRslt(arrResult)  

}  

function checkCh(ch){  

var uni = ch.charCodeAt(0)  

//如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数  

if(uni > 40869 || uni < 19968)  

return ch //dealWithOthers(ch)  

//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母  

return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)))  

}  

function mkRslt(arr){  

var arrRslt = [""]  

for(var i=0,len=arr.lengthi<leni++){  

var str = arr[i]  

var strlen = str.length  

if(strlen == 1){  

for(var k=0k<arrRslt.lengthk++){  

arrRslt[k] += str  

}  

}else{  

var tmpArr = arrRslt.slice(0)  

arrRslt = []  

for(k=0k<strlenk++){  

//复制一个相同的arrRslt  

var tmp = tmpArr.slice(0)  

//把当前字符str[k]添加到每个元素末尾  

for(var j=0j<tmp.lengthj++){  

tmp[j] += str.charAt(k)  

}  

//把复制并修改后的数组连接到arrRslt上  

arrRslt = arrRslt.concat(tmp)  

}  

}  

}  

return arrRslt  

}  

//两端去空格函数  

String.prototype.trim = function() {    return this.replace(/(^\s*)|(\s*$)/g,"") }  

  

//查看拼音首字母缩写  

function query(){  

    var str = document.getElementById("txtChinese").value.trim()  

    if(str == "") return  

    var arrRslt = makePy(str)  

    alert(arrRslt)

直接取首字母判断下它的ascii码就可以了。取首字母ascii码可以用string.charCodeAt(0)。A-Z的ascii码:65-90,a-z的ascii码:97-122。以下供参考:

var sSrc = "w33333"

var sASC = sSrc.charCodeAt(0)

if((sASC >= 65 && sASC <= 90) || (sASC >= 97 && sASC <= 122)){//代码 }