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

    前不久去阿里的在线笔试,最后一道题可算是难倒了我,题目大概是这样的:用原生的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; //返回截取的字符串
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章