最近参加了前端实习生招聘笔试,发现很多笔试题都会考到字符串的处理,比如去哪儿笔试,淘宝笔试题等如果你经常笔试或者是过往的人,相信你和我一样,发现字符串的处理是前端招聘过程中最常见的题型之一。这些题有一个特点,从考官的角度看,不是看你会不会,而是看你能不能不借XX手册或者XX指南或者百度谷歌,把答案写得更简洁一些。遗憾的是,很多开发者,当然我也是其中之一,对于很多经常使用的字符串处理函数,都不能牢牢记住它们的用法,总是不得不求助于XX手册或者XX指南或者百度谷歌。这样做的结果是,这些非常关键的基础知识还不够扎实,遇到这些题,还得用N层嵌套的for循环来一一遍历。这是一个信号。当你在做这类题的时候发现你用了太多的for循环,那就注意了,很有可能是你写错了。不要小看这些东西,它们可能对求职和日常发展起到很大的作用。好了,废话不多说,下面一一总结。难免有遗漏。如果您碰巧知道了,请添加或私信。1.字符串转换字符串转换是最基本的要求和工作。您可以将任何类型的数据转换为字符串。您可以使用以下三种方法中的任何一种:varnum=19;//19varmyStr=num.toString;//"19"你也可以这样做:varnum=19;//19varmyStr=String(num);//"19"或者,更简单:2.字符串切分字符串切分就是将一个字符串拆分成多个字符串。JavaScript为我们提供了一个非常方便的函数,比如:varmyStr="I,Love,You,Do,you,love,me";varsubstrArray=myStr.split(",");//["我","爱","你","做","你","爱","我"];vararrayLimited=myStr.split(",",3);//[“我爱你”];split的第二个参数表示返回的字符串数组的最大长度。3、获取字符串长度字符串长度在开发中经常用到,很简单如下:varmyStr="I,Love,You,Do,you,love,me";varmyStrLength=myStr.length;//254、querysubstring很多人会忘记这些JavaScript内置的方法,或者忘记它们的具体用法,导致做题的时候不得不嵌套for循环。第一个函数:indexOf,它从字符串的开头开始查找,找到就返回对应的坐标,找不到就返回-1。如下:varmyStr="I,Love,you,Do,you,love,me";varindex=myStr.indexOf("你");//7、以0为基数,未找到返回-1秒功能:lastIndexOf,从字符串末尾开始查找,找到则返回对应坐标,未找到则返回-1。如下:varmyStr="I,Love,you,Do,you,love,me";varindex=myStr.lastIndexOf("你");//14上面两个函数还接收第二个可选参数,表示从哪里开始查找。5.字符串替换光是找字符串不应该停下来,在一般题中经常会遇到可以自己查找并替换成自己字符串的字符串,例如:varmyStr="I,love,you,Do,you,love,我”;varreplacedStr=myStr.replace("love","hate");//"I,hate,you,Do,you,love,me"默认只替换第一次搜索可以,如果要全局替换,你需要设置一个常规的全局标志,例如:varmyStr="I,love,you,Do,you,love,me";varreplacedStr=myStr.replace(/love/g,"hate");//"I,hate,you,Do,you,hate,me"更详细的解释请参考:http://www.w3school.com.cn/jsref/jsref_replace.asp6,查找给定位置的一个字符或其字符编码值查找给定位置的一个字符,可以使用这样的函数:varmyStr="I,love,you,Do,你爱我”;vartheChar=myStr.charAt(8);//"o",也是从0开始。同理,它的一个兄弟功能是查找对应位置的字符编码值,如:varmyStr="I,love,you,Do,you,love,me";vartheChar=myStr.charCodeAt(8);//1117。字符串连接操作可以像加法运算一样简单,如:varstr1="I,love,you!";varstr2="你爱我吗?";varstr=str1+str2+"Yes!";//"I,love,you!Do,you,love,me?Yes!"同样,JavaScript也自带了相关的函数,比如:varstr1="I,love,you!";varstr2="Do,you,love,me?";varstr=str1.concat(str2);//"I,love,you!Do,you,love,me?"其中concat函数可以有很多参数,传递多个字符串,拼接多个字符串#p#8,字符串切割和提取有3种方法可以对一个字符串进行提取和切割,比如:第一种方法,使用splice:varmyStr="I,love,you,Do,you,love,me";varsubStr=myStr.slice(1,5);//",lov"第二种,使用substring:varmyStr="I,love,you,Do,you,love,me";varsubStr=myStr.substring(1,5);//",lov"第三种类型,使用substr:varmyStr="I,love,you,Do,you,love,me";varsubStr=myStr.substr(1,5);//",love"与第一个和第二个不同的是,substr的第二个参数表示截取字符串的最大长度,如上结果所示。9、字符串大小写转换常用的字符串大小写转换函数如下:varmyStr="I,love,you,Do,you,love,me";varlowCaseStr=myStr.toLowerCase;//"我,爱,你,做,你,爱,我";varupCaseStr=myStr.toUpperCase;//"I,LOVE,YOU,DO,YOU,LOVE,ME"10.字符串匹配字符串匹配可能需要你对正则表达式有一定的了解,先看匹配函数:varmyStr="我,爱,你,做,你,爱,我";varpattern=/love/;varresult=myStr.match(pattern);//["love"]console.log(result.index);//2console.log(result.input);//I,love,you,Do,you,love,me如你所见,match函数是在一个字符串上调用的,并接受一个常规参数。我们来看第二个例子,使用exec函数:varmyStr="I,love,you,Do,you,love,me";varpattern=/love/;varresult=pattern.exec(myStr);//["love"]console.log(result.index);//2console.log(result.input);//我,爱,你,做,你,love,me简单,就是把regular和characters字符串的位置改一下,也就是在regular上调用exec函数,传入字符串的参数。以上两种方法,匹配的结果都是返回第一个匹配成功的字符串,匹配失败则返回null。再看一个类似的方法搜索,比如:varmyStr="I,love,you,Do,you,love,me";varpattern=/love/;varresult=myStr.search(pattern);//2只返回找到匹配的下标,如果匹配失败,返回-1.11,字符串比较compare两个字符串,比较规则是按字母顺序比较,如:varmyStr="鸡";varmyStrTwo="鸡蛋";varfirst=myStr.localeCompare(myStrTwo);//-1first=myStr.localeCompare("鸡");//0first=myStr.localeCompare("apple");//112.比如我们看一道前端笔试题,来自去哪儿网,相信很多小朋友都做过这道题。题目:写一个getSuffix函数,获取输入参数的后缀名,例如输入abcd.txt,返回txt。附上我的回答:functiongetSuffix(file){returnfile.slice(file.lastIndexOf(".")+1,file.length);}结论我认为在JavaScript中进行字符串操作的函数应该不止这些,但是上面列出的这些应该是很常见的。如果有什么需要补充的,欢迎补充!希望大家在看到这些之后,能够非常坦然的面对字符串笔试面试题。
