面试题:说不出五个就尴尬了!我目前只写了几个方法,待更新中。。。
- 1、length
- 2、slice()
- 3、substr()
- 4、substring()
- 5、split()
- 6、indexOf()
1、length
作用:检测字符串的长度。
let str = 'abcde'
console.log(str.length) // 5
2、slice()
截取指定位置的字符串。
参数1:开始截取的位置(下标)
参数2:选填,若不填,则截取到最后;若传入要截止的下标,则返回值为这两个参数中间的位置(前包后不包);
若参数都为负数,从后往前数,把字符串最后一位看做-1,前包后不包
不会改变原数组
- 参数2 不填
let str = 'abcdefg'
let str1 = str.slice(1)
console.log(str1) // 'bcdefg'
- 参数2 填
let str = 'abcdefg'
let str1 = str.slice(1, 3)
console.log(str1) // 'bc'
- 参数 都为负数
let str = 'abcdefg'
let str1 = str.slice(-4, -2)
console.log(str1) // 'de'
3、substr()
参数1:开始截取字符串的下标
参数2:length的长度,要截取字符的长度
若参数1为负值,则从该字符串的末尾数,从后往前数,最后一位看做-1
返回值:为截取中的内容,不会改变原字符串
let str = 'abcdefg'
let str1 = str.substr(1, 2)
console.log(str1) // 'bc'let str2 = str.substr(1)
console.log(str2) // 'bcdefg'let str3 = str.substr(-3, 3)
console.log(str3) // 'efg'
4、substring()
参数1: 要截取字符的开始下标
参数2: 选填,要截止的下标,若不传则会截取到末尾
前包后不包,不会改变原字符串
但是不能传入负值
let str = 'abcdefg';let str1 = str.substring(2, 4);console.log(str1); // 'cd'let str2 = str.substring(2);console.log(str2) // 'cdefg'
5、split()
将字符串按照指定字符,把一个字符串分割成数组
参数1:字符串中的字符,以这个字符为界限分割成数组;如果这个指定的字符为空,则会得到该字符串每个都分开的数组;
参数2:选填,若不传,则按情况分割数组;若传入,则限制输出数组的长度,多余的项会省略
分割后的数组,不包括指定字符本身
let str = 'abcdfbef';let str1 = str.split('b');console.log(str1);let str2 = str.split('b', 2);console.log(str2);let str3 = str.split('');console.log(str3);
6、indexOf()
检测指定字符首次出现的位置下标
参数1:指定的字符
参数2:选填,从该位置开始往后找的,找到返回下标
若存在,则返回该位置的下标,不存在就返回-1
大写小是不一样的,注意!
let str = 'abCcdecf';let str1 = str.indexOf('c');console.log(str1); // 3let str2 = str.indexOf('g');console.log(str2); // -1let str3 = str.indexOf('c', 4);console.log(str3); // 6