记忆
易混: substring slice substr split
查找: indexOf charAt charCodeAt search
concat replace
toLowerCase toUpperCase
es6: for-of遍历器接口 repet includes
常用字符串的方法发 String.prototype.方法
- indexOf(返回指定字符串的下标)
let str = 'asdfsadfasdf' console.log(str.indexOf('a'))//0 console.log(str.indexOf('b'))//-1 //第二个参数代表从该下标后查找的下标 console.log(str.indexOf('a',7))//8 - substring(返回指定的字符串,范围:[ 起始下标,结束下标 ) )
let str = 'asdfsadfasdf' //不会改变原数组----截取字符串并返回 console.log(str.substring(2)) //dfsadfasdf console.log(str.substring(2,5))//dfs '[2,5)' - slice(也是返回指定的字符串---没有自动调节)
let str = 'asdfsadfasdf' console.log(str.substring(5,2));//dfs console.log(str.slice(5,2));// '' - substr()(substr接收的则是起始位置和所要返回的字符串长度)
let str = 'asdfsadfasdf' console.log(str.substr(0,1));//a console.log(str.substr(2));//dfsadfasdf
slice,substr和substring的区别
相同点:都是获取指定的字符串
不同: 当接收的参数是负数时
slice会将它字符串的长度与对应的负数相加,结果作为参数;
substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;
substring则干脆将负参数都直接转换为0。
var test = 'hello world';
alert(test.slice(-3)); //rld
alert(test.substring(-3)); //hello world
alert(test.substr(-3)); //rld
alert(test.slice(3,-4)); //lo w
alert(test.substring(3,-4)); //hel
alert(test.substr(3,-4)); //空字符串
-
split(以指定字符分割字符串,并将分割后的字符串放入数组)
let str = 'as/df/sd/fa' console.log(str.split(''));// ["a", "s", "/", "d", "f", "/", "s", "d", "/", "f", "a"] console.log(str.split('/'));//["as", "df", "sd", "fa"] -
concat (将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回)
MDN 性能:强烈建议使用 赋值操作符(+, +=)代替 concat 方法 let a = 'abc' let b = 'defg' console.log(a.concat(b));//'abcdefg' console.log(a+b);//'abcdefg' -
replace(替换值, 新值) (替换字符串,第一个值可以是正则,第二个值可以是函数)
let str = '8a78fhasi238f32h' console.log(str.replace(/[0-9]/g,"?"));//?a??fhasi???f??h -
charCodeAt()字符的ASCII编码
'a'.charCodeAt() // =>97 'z'.charCodeAt() //=>122 'A'.charCodeAt() //=>65 'Z'.charCodeAt() //=>90 '可以通过编码判断字母的大小写 65-90 大写字母A-Z 97-122小写字母a-z ' -
charAt(index)方法返回指定位置的字符
let str = '8a78fhasi238f32h' console.log(str.charAt(1))//a -
toLowerCase() 大写字母转小写 --- toUpperCase() 小写字母转大写
-
search(方法执行正则表达式和 String 对象之间的一个搜索匹配)
语法 str.search(regexp)
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1
es6新增方法
- 遍历器接口 for-of
for (let k of 'foo') { console.log(k) } // "f" // "o" // "o"let s = 'qewr' s[1] //'q' s[2] //'e' - repet(方法返回一个新字符串,表示将原字符串重复n次)
'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // "" - includes
let s = 'hello word' s.includes('o') // true
题
-
字符串去重,并除掉特殊字符按照数字在前字母在后的顺序排列字符串
let str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs'; 输出结果 12345fdsarg
思路 //1.字符串去重--创建新的变量接收无重复的字符串-利用indexOf找不到值返回-1,来添加到新的空字符串中 //2.去除特殊字符 //3.排序 -- 区别字母和数组--最后拼接 let str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs'; //1.字符串去重(老方法) // let newStr = '' // for(let i=0;i<str.length;i++){ // let s = str[i] // if(newStr.indexOf(s) == -1){ //返回指定字符串的下标 // newStr += str[i] // } // } // console.log(newStr);//123fd&4sa5rg let newStr = '' for(let k of str){ //字符串新增遍历器接口 if(newStr.indexOf(k) == -1){ newStr += k } } // console.log(newStr);//123fd&4sa5rg //2.去除特殊字符 let w = newStr.replace('&','') // console.log(w);//123fd4sa5rg //3. 排序 let number = '' let letter = '' for(let k of w){ if(k.charCodeAt()>=49 && k.charCodeAt()<=57){ number += k }else{ letter += k } } let res = number + letter console.log(res)