标签: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调小蜗牛” 博客,谢绝转载!
标签:charcodeat();区分汉字;阿里笔试;unicode
原文地址:http://10271962.blog.51cto.com/10261962/1688919