浏览 4045 次
锁定老帖子 主题:姓氏排序程序 Js 版(小程序共享)
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-19
最后修改:2009-10-22
一朋友给客户做类似黄页的册子,有 N 多客户名称和电话。客户要求对用户名按笔画数排序整理,如 7画 下有那些用户、8画下有哪些用户等等。 本来可以用 Excel 软件排,但她实在想偷懒,因为 Excel 中并不会把笔画数也给标示出来,还必须自己找到不同笔画数的首条记录,然后添加笔画数说明。 就给她写了这个小脚本, 用其它语言写也可以,但用 Js 比较好找执行环境——浏览器就是了 呵呵。 发出来共享一下,说不定有谁需要呢。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>姓氏排序 JS 版</title> <style> body { font-size: 9pt; } textarea { font-size: 9pt; width: 100%; margin: 10px 0px; } textarea.From { height: 200px; } textarea.To { height: 350px; } input.Submit { margin-top: 20px; } </style> <script language="javascript"> // 姓氏列表(复姓仅取首字) var _surname = []; _surname[1] = '乙'; _surname[2] = '丁七卜刁刀乜'; _surname[3] = '干于寸万弋上山广门弓卫也习马子幺'; _surname[4] = '支云亓元木王车丰韦尤戈区仇从公毛午牛长风凤计卞文方亢斗邓孔尹巴水'; _surname[5] = '艾玉古东布石左龙归帅叶卢田申史冉付印仝丛丘白句包乐冯邝召台皮司边'; _surname[6] = '邢戎巩权吉西成毕过匡师吕曲乔年朱伍伏仲任伊伉华向后全邬危刘齐庄江池汤宇安关羊米许祁农那阮阳阴孙纪'; _surname[7] = '麦杜杨邴芮花芦苏劳李吾严巫酉甫励邳抗轩连芈邺肖岐时旷吴岑何但佟邱佘余谷犹狄邹言辛库闵冷汪沐沙沃沈宋张陆阿陈妫姒邵邰'; _surname[8] = '青武林杭苗英苟范昔郁欧卓尚呼明易罗国和邾季竺佴郈侬岳兒郄郐念金鱼周於庞郑冼郎房屈练'; _surname[9] = '贰项柯相柏柳胡荆郝郦南荀荣革查赵哈思香钟钮郜侯段皇禹郗俞独昝逄施闻洪宦宫姜娄祖祝费胥姚贺绕骆'; _surname[10] = '班敖秦桂耿索袁莫聂晋栗贾顾夏原柴党晁晏钱铁俸倪徐殷翁奚卿馀郭高栾席唐凌浦海涂容诸谈展陶姬桑'; _surname[11] = '梅梓菅萧萨黄曹奢龚盛戚常崔符瘐康麻阎渔盖寇梁扈尉屠隗隆巢'; _surname[12] = '琮韩彭葛董蒋壹覃粟惠辜斐喻嵇程税智傅储焦舒鲁童温滑游曾谢禄缗'; _surname[13] = '槐楼赖靳甄蒯鄢蓝蓟蓬蒲蒙楚雷零裘肆訾虞睢路锡简解鲍詹雍满窦谬褚'; _surname[14] = '慕蔡蔺蔚臧管鲜端韶廖阚赛谭熊翟缪'; _surname[15] = '耦横撒墨稷黎樊滕颜潘豫'; _surname[16] = '融薛薄燕霍冀黔穆衡嬴澹'; _surname[17] = '璩檀懋鞠戴赡镡魏繇襄糜麋濮蹇'; _surname[18] = '瞿'; _surname[19] = '酆矍籍灌'; _surname[20] = '露夔'; _surname[21] = '囊鬻'; function findit(zi, dict) { for (var i=1; i<dict.length; ++i) { var _str = dict[i]; for (var j=0; j<_str.length; ++j) { if (zi == _str.charAt(j)) return i; } } return 0; } // txt 待处理的姓名数据行(一行一条信息) function process(txt, dict) { var _out = []; var _list = txt.split("\n"); _list.sort(); // 姓名数据行循环 for (var i=0; i<_list.length; ++i) { var _line = _list[i].replace(/^\s+/, ''); if (_line == '') continue; // 取第一字 var _chr = _line.charAt(0); // 笔画数查询 var _num = findit(_chr, dict); if (_out[_num] !== undefined) { _out[_num] += _line + "\n"; } else { _out[_num] = _line + "\n"; } } var _ret = ''; for (var i=0; i<_out.length; ++i) { if (_out[i] !== undefined) { _ret += i + "画\n" + _out[i] + "\n"; } } return _ret; } function picking() { var _txt = document.myfrm.from.value; document.myfrm.to.value = process(_txt, _surname); } </script> </head> <body> <h1 align="center">姓名笔画排序程序</h1> <div style="width:998px;margin:20px auto;"> <form name="myfrm"> <textarea name="from" class="From">请填入待处理的姓名数据行。一行一条姓名数据,姓名在前,相关信息在后。</textarea> <textarea name="to" class="To">此处输出处理后的数据。</textarea> <div align="center"><input class="Submit" type="button" onClick="picking();" value="处 理" /></div> </form> </div> </body> </html>
如果不能下载附件,拷贝上面的代码,保存为 .html 就可以了。
或者用这个网址直接使用:http://www.tr169.cn/bm/namesort.html (注:那是俺公司的服务器,刚刚想到上传了上去,方便不想拷贝下载文件的朋友啦。。呵呵。 这网址不是做广告,仅仅为了方便人,如果管理员觉得不合适,请告诉,俺删除之即是。)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-22
待处理的姓名数据行。~~ 有什么格式要求吗?? 比如 张三 换行 李四 /?
还是都在一行上... |
|
返回顶楼 | |
发表时间:2009-10-22
最后修改:2009-10-22
一行一条信息
姓名在前,其它信息 比如 联系电话等等(属于附加信息 从属于一个姓名的) 就是提供一个方便而已,排好序后自己处理其它附加信息了(比如导入 Excel) 如: 张三 联系电话123456 地址xxx 后面无所谓了 呵呵 李四 其实只处理第一个字 王二 如果碰到没有的姓,自己按笔画数加进去(处理结果显示为0画) |
|
返回顶楼 | |
发表时间:2009-10-22
郁闷,把俺姓郑的给忽略掉了,俺还得自己加上。
|
|
返回顶楼 | |
发表时间:2009-10-22
最后修改:2009-10-22
zhengyutong 写道 郁闷,把俺姓郑的给忽略掉了,俺还得自己加上。
晕。。居然连这么普通的姓都漏掉了! 是从网上找的姓氏数据,没一个个检查 不好意思了 好事做到底——加上了,附件已更新。 |
|
返回顶楼 | |