码迷,mamicode.com
首页 > Web开发 > 详细

用js识别字符串中的英文字母字符和非字符(汉字)

时间:2015-08-27 19:10:11      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:charcodeat();区分汉字;阿里笔试;unicode

    前不久去阿里的在线笔试,最后一道题可算是难倒了我,题目大概是这样的:用原生的js实现字符串中的英文字母字符和汉字的识别,汉字按照两个单位计算,英文和字符按照一个单位计算,乍一想真不知道有什么好办法,以前写c代码太多,就用c代码对ascii的办法来,笔试结束字符才知道,js是很高大上的玩意儿,这招行不通。在这里我介绍一种很简单很靠谱的方法,用unicode字符集的办法来解决。

    


    首先脑补一下小知识:unicode字符集数字0 - 128是英文字母字符(半角)的范畴,在这以外是其他字符(全角),用js字符串的charCodeAt()可以返回处理后的字符Unicode码。


下边是我设计的函数方法


    

function strChange(str,n){   //str是要传入处理的字符串,n是需要返回字符串的长度
    var myStr = null;          //新建字符串,用于保存要返回的那一段字符串
    var k = 0;
    for(var i=0;i<str.length;i++){
        if(str.charCodeAt(i)>=0&&str.charCodeAt(i)<128){  //charCodeAt(i)可以返回字符处理后的Unicode码长
            if(k==n)      
                break;   //如果够数了,就跳出循环
            myStr=myStr+str.charAt(i);    //把字符存入要返回的字符串中
            k+=1;  
        }
        else{
        if(k==n)
                break;
            myStr=myStr+str.charAt(i);
            k+=2;
        }
    }
    return myStr; //返回截取的字符串
}


本文出自 “D调小蜗牛” 博客,谢绝转载!

用js识别字符串中的英文字母字符和非字符(汉字)

标签:charcodeat();区分汉字;阿里笔试;unicode

原文地址:http://10271962.blog.51cto.com/10261962/1688919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!