1. 在js中如何实现自动获取汉字的五笔首字母
在js中如何实现自复动获取汉字的制五笔首字母?
你的意思是不是,在页面如果打“z”,转换成汉字对应的一些字,然后再根据这些字,来查数据库,取的相关的数据?
这样麻烦。
一般都是在存数据的时候,就已经转换好了对应的拼音。
比如要存:张**
,在存入数据库的时生成一个对应的拼音:zhang**
,把这个也一起存了,汉字存汉字字段,拼音存拼音字段。
查找时输入z,就直接在拼音字段里查需要的数据。
如果表允许再增加字段,还是加个拼音的字段,查找时候方便,快捷。
网上找个汉字转换拼音的类,把数据处理一下,存进拼音字段里。
这个是汉字转拼音参考:
2. JS 匹配汉字正则
/[\u4e00-\u9fa5]/ 正则只能匹配中文,记住是中文,匹配汉字是不正确;
/\p{Unified_Ideograph}/u是正确的,不需要维核码护,匹配所有汉字。
移步下面链接:
javaScript 正则表达式匹配改棚哪汉字
如和宴果要匹配所有(结尾加上g):
reg = /\p{Unified_Ideograph}/ug
eg:
str.replace(reg, 'aa');
3. 求javascript代码:地名拼音转汉字
下面的例子是引用12306的地址,输入地名全拼显示中文地名:
<div>
<p><inputtype="text"id="address"/><inputtype="button"id="btn"value="查询"/></p>
<pid="content"></p>
</div>
<scripttype="text/javascript"src="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9050"></script>
<scripttype="text/javascript"src="http://libs..com/jquery/2.0.3/jquery.min.js"></script>
<script>
$(function(){
$('#btn').click(function(){
getCnName($('#address').val());
})
functiongetCnName(name){
vararr=station_names.split('@');
for(variinarr){
varson=arr[i].split('|');
if(son.length>1){
if(son[3]==name){
$('#content').html("查询结果:"+son[1]);
}
}
}
}
})
</script>
下面是演示效果:
将代码复制到一个html文件中,在浏览器打开就能用了。
4. js中如何根据汉字生成拼音首字母
//参数,中文字符串
//返回值:拼音首字母串数组
functionmakePy(str){
if(typeof(str)!="string")
thrownewError(-1,"函数makePy需要字符串类型参数!");
vararrResult=newArray();//保存中间结果的数组
for(vari=0,len=str.length;i<len;i++){
//获得unicode码
varch=str.charAt(i);
//检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理
arrResult.push(checkCh(ch));
}
//处理arrResult,返回所有可能的拼音首字母串数组
returnmkRslt(arrResult);
}
functioncheckCh(ch){
varuni=ch.charCodeAt(0);
//如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数
if(uni>40869||uni<19968)
returnch;//dealWithOthers(ch);
//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
return(oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)));
}
functionmkRslt(arr){
vararrRslt=[""];
for(vari=0,len=arr.length;i<len;i++){
varstr=arr[i];
varstrlen=str.length;
if(strlen==1){
for(vark=0;k<arrRslt.length;k++){
arrRslt[k]+=str;
}
}else{
vartmpArr=arrRslt.slice(0);
arrRslt=[];
for(k=0;k<strlen;k++){
//复制一个相同的arrRslt
vartmp=tmpArr.slice(0);
//把当前字符str[k]添加到每个元素末尾
for(varj=0;j<tmp.length;j++){
tmp[j]+=str.charAt(k);
}
//把复制并修改后的数组连接到arrRslt上
arrRslt=arrRslt.concat(tmp);
}
}
}
returnarrRslt;
}
//两端去空格函数
String.prototype.trim=function(){returnthis.replace(/(^s*)|(s*$)/g,"");}
//查看拼音首字母缩写
functionquery(){
varstr=document.getElementById("txtChinese").value.trim();
if(str=="")return;
vararrRslt=makePy(str);
alert(arrRslt);
5. js怎么获取一个汉字的首字母
1、新建一个复html文件,命名为test.html。
6. JS实现输入拼音搜索中文列表
最近工作中接到了一个需求:一个项型陆目列表,项目名称可能有中文可能有英文,如果是中文的话,需要实现用户输入项目的拼音即可筛选到对应项目的功能。
完成了之后觉得可以在公众号里给大家分享一下,给有需要的人一个参考吧。
项目框架用的是react,所以先creat-react-app
比如create-react-app pinyin
渲染选择框的组件用的是antd的Select组件,所以需要先引入antd,具体引入的方法参照antd官方文档,已经写得很清楚了
以上准备工作做好后,目前的目录结构应该如下图所示:
├── README.md
├── package.json
├── package-lock.json
├── config-overrides.js
├── public
│ ├── favicon.ico
│ ├──index.html
└── manifest.json
├── src
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ ├──logo.svg
│ └── registerServiceWorker.js
现在在src文件夹下新建一个components文件夹,components文件夹中新建隐基一个SelectPinYin文件夹,SelectPinYin文件夹下新建一个index.js和PinYin.js
PinYin.js文件中主要放置拼音和各个拼音对应灶租谨的中文字符串,方便组件调用
export const SimplePinYin = {
py: [
[ 'a','阿啊呵腌吖锕啊呵嗄啊呵啊呵阿啊呵' ],
[ 'ai','哀挨埃唉哎捱锿呆挨癌皑捱矮哎蔼霭嗳爱碍艾唉哎隘暧嗳瑷嗌嫒砹' ],
[ 'an','安谙鞍氨庵桉鹌厂俺铵揞埯案按暗岸黯胺犴' ],
[ 'ang','肮昂盎' ],
[ 'ao','熬凹熬敖嚣嗷鏖鳌翱獒聱螯廒遨袄拗媪奥澳傲懊坳拗骜岙鏊' ],
[ 'ba','八吧巴叭芭扒疤笆粑岜捌八拔跋茇菝魃把靶钯把爸罢霸坝耙灞鲅吧罢' ],
[ '','掰白百摆伯柏佰捭败拜呗稗' ],
[ 'ban','般班搬斑颁扳瘢癍版板阪坂钣舨办半伴扮瓣拌绊' ],
[ 'bang','帮邦浜梆膀榜绑棒膀傍磅谤镑蚌蒡' ],
[ 'bao','包胞炮剥褒苞孢煲龅薄雹保宝饱堡葆褓鸨报暴抱爆鲍曝刨瀑豹趵' ],
[ 'bei','背悲杯碑卑陂埤萆鹎北被备背辈倍贝蓓惫悖狈焙邶钡孛碚褙鐾鞴臂呗' ],
...
]
}
内容太多,只能复制这样一小部分,其余部分可以参考下面这条链接,然后改成上面那种格式就可以了。
http://www.cnblogs.com/meteoric_cry/p/5954547.html
接下来开始写组件
要做到拼音搜索匹配到中文,所以调用this.selectPinYin函数,下面开始写selectPinYin函数
当input为中文时:
return option.props.children.toLowerCase().indexOf( input.toLowerCase() ) >= 0;
当input为字母时:
const value = option.props.children.toLowerCase().split( '' );
const newValue = value.map( item => this.chineseChangePY( item ) ).join( '' );
return newValue.indexOf( input.toLowerCase() ) >= 0;
思路:
① 将列表中的每项内容,即option.props.children转成小写(万一不全是中文),然后进行分割,split('')把字符串转成数组
② 遍历得到的数组,并把每一个元素传递给chineseChangePY函数
③ chineseChangePY函数的作用:如果元素不是中文,直接返回;如果是中文,遍历PinYin.js中的数组,与每个子数组的第二个元素即中文字符串对比,如果元素在这个中文字符串里,返回中文字符串所在数组的第一个元素,即所需要的拼音
④ 将处理过的数组转成字符串
⑤ 和input进行对比,存在返回true,不存在返回false
bug说明: 比如遇到生僻字的时候,PinYin.js中没有收录进这个中文,就无法匹配。比如遇到多音字的时候,“藏”:既可以cang也可以zang,cang排在zang前面,当遍历匹配的时候遇到cang就已经返回了,所以如果有用户输入zang就匹配不到藏字。
如果有更好的方法,欢迎讨论交流。
7. javascript汉字获取拼音首字符问题
那个是VBscript的函数,js里面没有获取GB2312编码的函数,需要自己整一个。
GB2312里面的7k多个汉字是按照拼音排序的,后来扩充的汉字并没有按照拼音排序,(为了不打乱已经排好的GB2312编码表),所以要准确获取拼音最好还是用词库来比对。
这里有比较好的例子:
http://www.cssrain.cn/demo/pinyin/lukin/Pinyin.html
自己改写一下就可以。
如果要搞好那个函数,需要把编码转换为ansi编码,网上有很多这里函数。
复杂的汉字确实不能找到正确的拼音,只适用简单的汉字GB2312里的。
改写如下:
先去http://www.cftea.com/c/2009/04/3T7WXDO9S9VFBXH3.asp 里弄两个函数来:字数超过限制就不贴这两个函数了。自己去下载一下:
function UnicodeChr();
function AnsicodeChr();
var s='拼音转换';
alert( getPY_str(s) );
function getPY_str(str){
var py_str='';
for ( var i=0; i < str.length ; i++)
{
py_str +=getPY(str.substr(i,1));
}
return py_str;
}
function ansi(c){
return UnicodeToAnsi(c.charCodeAt(0));
}
function UnicodeToAnsi(chrCode)
{
var chrHex=chrCode.toString(16);
chrHex="000"+chrHex.toUpperCase();
chrHex=chrHex.substr(chrHex.length-4);
var i=UnicodeChr().indexOf(chrHex);
if(i!=-1)
{
chrHex=AnsicodeChr().substr(i,4);
}
return parseInt(chrHex,16);
}
function getPY(ch)
{
if(ch !='') {
var code = ansi(ch);
var py = '';
if(code>=45217 && code<=45252) {
py = "A"
} else if(code>=45253 && code<=45760) {
py = "B"
} else if(code>=45761 && code<=46317) {
py = "C"
} else if(code>=46318 && code<=46825) {
py = "D"
} else if(code>=46826 && code<=47009) {
py = "E"
} else if(code>=47010 && code<=47296) {
py = "F"
} else if((code>=47297 && code<=47613) || (code == 63193)) {
py = "G"
} else if(code>=47614 && code<=48118) {
py = "H"
} else if(code>=48119 && code<=49061) {
py = "J"
} else if(code>=49062 && code<=49323) {
py = "K"
} else if(code>=49324 && code<=49895) {
py = "L"
} else if(code>=49896 && code<=50370) {
py = "M"
} else if(code>=50371 && code<=50613) {
py = "N"
} else if(code>=50614 && code<=50621) {
py = "O"
} else if(code>=50622 && code<=50905) {
py = "P"
} else if(code>=50906 && code<=51386) {
py = "Q"
} else if(code>=51387 && code<=51445) {
py = "R"
} else if(code>=51446 && code<=52217) {
py = "S"
} else if(code>=52218 && code<=52697) {
py = "T"
} else if(code>=52698 && code<=52979) {
py = "W"
} else if(code>=52980 && code<=53688) {
py = "X"
} else if(code>=53689 && code<=54480) {
py = "Y"
} else if(code>=54481 && code<=62289) {
py = "Z"
} else {
py =ch;
}
return py;
}else{
return '';
}
}
8. js中如何实现输入汉字的拼音声母出现对应的汉字
和google的输入提示一个道理,几乎所有Ajax入门书都讲这个。
简单的说,输入框的onchange事件的响应函数里面增加一个xmlhttp请求,
服务器响应请求返回提示更新页面。
但是细节上考虑要多复杂有多复杂,
首先就是拼音到汉字,你需要找输入法的源代码,
然后就是缓存,数据库,安全性等等……
方案二:纯js
用js写一个输入法……
大致思路是页面用按音序排列的编码,如GB2312,然后以音序映射到字符编码上
9. 用Javascript如何实现在输入框中输入汉字拼音的首字母动态过滤相应的汉字
把汉字先转成拼音(网络一下就有代码)
再用ajax来更新
10. 求 js 文本框输入拼音出现下拉框列表的特效代码 就像百度搜索框一样 要完整demo 可完美迁移。
这个说简单不简单,说难不难,如果你想非常精确,非常优化的提示,需要很多人工干预,
如果是完全自动化处理也是可能的,关键是你要用哪一门后台语言。本人只擅长PHP,先讲下原理。
就是把你首先你要筛选出一堆提示关键字, 按拼音的字母排序,然后,每次ajax查询时候如果用户输入纯英文,就跟汉字首字母比较。比如你给的JS,匹配字“即时,检索,解释"什么的,就可以显示。
这时候你要说了,我怎么取汉字首字母,难道手工打上去并排序么。这其实可以用程序来取。网络找“jsp把汉字转拼音”或者php把汉字转拼音,这些都有现成的函数。做一次2次开发,用个页面接收你输入的关键字取每个拼音首字母,然后输入到数据库关键字表中,输出到txt、xml、内存缓存做关键词提示的时候可以再按拼音和优先级排序,mysql是可以用拼音排序的。比如下面的数据项(仅供参考,你喜欢怎么写都行)
建设 /jianshe / JS / 0 / 1
这样就一行。第一项主键,第二项是全拼音索引,用来排序和备用,最后2个是查询的次数和手工的加权数,
然后服务器查询的时候,依靠第三项JS,查询出一堆符合的汉字,结合后2位数算出优先级大小显示前10个就可以。用户查询后获取他用的关键字,然后查询次数+1。
你既然写过这类程序,这个检索汉字功能关键就是转拼音的2次开发,取首字母并排序生成一个新型的词库。也不算太有差异。