用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; //返回截取的字符串
}


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