js字符串的方法
1.charAt 返回指定索引出的字符
var str='abcd'; var a=str.charAt(0); console.log(a); //'a' console.log(str); //'abcd'
2.charCodeAt 返回指定索引出的unicode字符
str.charCodeAt(0); //97
3.indexof 判断一个字符第一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.
str.indexOf('a'); //0 str.indexOf('e'); //-1
4.lastIndexOf 判断一个字符最后一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.
str.lastIndexOf('b'); //1 str.lastIndexOf('e'); //-1
5.concat拼接2个字符串,返回一个新字符串,对原有字符串没有任何改变。
var str='qwe'; var str1='abc'; var str2=str.concat(str1); console.log(str2);//"qweabc"
6.substr(n,m) 从索引n开始,截取m个字符,将截取的字符返回,对原字符串没有任何改变。
var b=s.substr(1,1) console.log(b); //'w'
7.substring(n,m) 从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.
var ee=str.substring(1,3); console.log(ee); //"bc"
8.slice(n,m) 从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.
var aa=str.slice(0,3); console.log(aa);//'abc'
9.split 用指定字符分割字符串,返回一个数组.对原字符串没有任何改变。
var a=str.split(''); console.log(a); //["a", "b", "c", "d"]
10.replace('a',1); 替换指定字符,返回替换后新的字符串,对原有字符串有改变。(第一个参数可以是正则表达式) 只能替换一次 ,配合正则模式修饰符g使用
var str='aaaaee'; var reg=/a/g; str.replace(reg,1); //"1111ee"
11.match() 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。把找到的字符放在数组里,返回一个数组。
var str='aaaa3ed33'; var reg=/a/g; str.match(reg); //["a", "a", "a", "a"]
12.search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
es6新增加的方法
1.codePointAt() 能够正确处理4个字节储存的字符,返回指定索引出一个字符的码点。codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。
var s = '𠮷a'; s.codePointAt(0) // 134071 s.codePointAt(1) // 57271
codePointAt
方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString
方法转换一下。
var s = '𠮷a'; s.codePointAt(0).toString(16) // "20bb7" s.codePointAt(2).toString(16) // "61"不能识别32位的UTF-16字符
配合for...of
循环使用,因为它会正确识别32位的UTF-16字符。
var s = '𠮷a'; for (let ch of s) { console.log(ch.codePointAt(0).toString(16)); } // 20bb7 // 61
2.codePointAt用于从码点返回对应字符,但是这个方法不能识别32位的UTF-16字符(Unicode编号大于0xFFFF
)。
String.fromCodePoint(0x20BB7) // "𠮷" String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' // true
3.for..of 字符串的遍历器接口
for (let codePoint of 'foo') { console.log(codePoint) } // "f" // "o" // "o"
4.at() 返回指定索引处的字符
'abc'.at(0) // "a" '𠮷'.at(0) // "𠮷"
5.includes():返回布尔值,表示是否找到了参数字符串。这三个方法都支持第二个参数,表示开始搜索的位置。
6.startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。这三个方法都支持第二个参数,表示开始搜索的位置。
7.endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。这三个方法都支持第二个参数,表示开始搜索的位置。
var s = 'Hello world!'; s.startsWith('world', 6) // true s.endsWith('Hello', 5) // true s.includes('Hello', 6) // false
8.repeat() 方法返回一个新字符串,表示将原字符串重复n
次。
'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // ""
9.padStart(),padEnd()字符串补全长度的功能
padStart()用于头部补全
padEnd()用于尾部补全
padStart
和padEnd
一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。
'x'.padStart(5, 'ab') // 'ababx' 'x'.padStart(4, 'ab') // 'abax' 'x'.padEnd(5, 'ab') // 'xabab' 'x'.padEnd(4, 'ab') // 'xaba'
如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。
'xxx'.padStart(2, 'ab') // 'xxx' 'xxx'.padEnd(2, 'ab') // 'xxx'
如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。
'abc'.padStart(10, '0123456789')
如果省略第二个参数,默认使用空格补全长度。
'x'.padStart(4) // ' x' 'x'.padEnd(4) // 'x '