目录
前言:
所有的字符串方法都是返回新的字符串,不会更改原始字符串(这一点比数组好区分多了~)
- var str = 'bad girl';
- console.log(str.length); // 8
- str.indexOf(searchString, position) // 第一个参数是要查找的字符,第二个参数是开始查找的位置
- // 第二个参数可省略,默认从第一个字符开始查找
该方法接收两个参数,第一个参数是要查找的字符,第二个参数是开始查找的位置,若不传第二个参数,则默认从0开始查找;若参数小于0,也默认从0开始查找;查找时区分大小写~
该方法返回查找字段所在索引位置,若找不到,则返回-1;
- var str = 'good good study, day day up';
- console.log(str.indexOf('a')); // 18 取得是第一个day中的a
-
- var str = 'good good study, day day up';
- console.log(str.indexOf('a', 19)); // 22 从第19个字符开始查找
-
- var str = 'good good study, day day up';
- console.log(str.indexOf('e')); // -1 没找到字符e
参数与用法有indexOf()方法一样,如果第二个参数大于或等于数组的长度,则表示整个数组会被查找;若为负值,则视为从0开始查找;
- var str = 'good good study, day day up';
- console.log(str.lastIndexOf('a')); // 22 取得是第二个day中的a
- console.log(str.lastIndexOf('a', -22)); // -1 负数默认从索引位置0处取,0位置是g,所以结果为-1
该方法执行正则表达式对String对象进行搜索匹配;
str.search(regexp)
所传参数为一个正则表达式对象,若传入一个非正则表达式对象,则会使用new RegExp(regexp)隐式的将其转换为正则表达式对象;
若匹配成功,则返回正则表达式在字符串中首次匹配项的索引值,反之为-1;
- var str = 'good good study, day day up';
- console.log(str.search(/oo/)); // 1
- console.log(str.search(/^oo$/)); // -1
- console.log(str.search('o')); // 1
该方法执行区分大小写的搜索,以确定是否可以在另一个字符串中找到一个字符串,如果能找到则返回true,反之返回false;同样可接收两个参数,第一个参数是要查找的字符串,第二个字符串是开始查找位置;
- str.includes(searchString)
- str.includes(searchString, position)
- var str = 'good good study, day day up';
- console.log(str.includes('oo')); // true
- console.log(str.includes('oo', 8)); // false
startsWith()方法用来判断当前字符串是否以另外一个子字符串开头(区分大小写),如果是返回true,反之返回false;
- str.startsWith(searchString)
- str.startsWith(searchString, position)
同样有两个参数,第一个参数表示子字符串,第二个参数是开始查找的位置;
- var str = 'good good study, day day up';
- console.log(str.startsWith('good')); // true
- console.log(str.startsWith('study')); // false
endsWith()方法用来判断当前字符串是否以另外一个子字符串结尾(区分大小写),如果是返回true,反之返回false;
- str.startsWith(searchString)
- str.startsWith(searchString, length)
同样有两个参数,第一个参数表示子字符串,第二个参数表示截取的str的长度,若不传则默认是str.length
- var str = 'good good study, day day up';
- console.log(str.endsWith('up')); // true
- console.log(str.endsWith('study')); // false
- console.log(str.endsWith('study',15)); // true
该方法返回指定下标的字符;参数index取值在0~str-length-1之间,如果不在此范围,该方法将返回一个空字符串。
str.charAt(index)
- var str = 'good good study, day day up';
- console.log(str.charAt(3)); // d
str.toUpperCase()
- var str = 'good good study, day day up';
- console.log(str.toUpperCase()); // GOOD GOOD STUDY, DAY DAY UP
str.toLowerCase()
- var str1 = 'GOOD GOOD STUDY, DAY DAY UP';
- console.log(str.toLowerCase()); // good good study, day day up
该方法删除首尾两侧的空白字符,包含空格、tab以及不换行空格,所有行终止符(如LF/CR等)
str.trim()
- var str = ' good good study, day day up ';
- console.log(str); // good good study, day day up
- console.log(str.trim()); // good good study, day day up
该方法会删除字符串末尾的空白字符。该方法等同于trimRight();
- var str = 'good good study, day day up ';
- console.log(str.length); // 29
- console.log(str.trimEnd().length); // 27
该方法会删除字符串首部的空白字符。该方法等同于trimLeft();
- var str = ' good good study, day day up';
- console.log(str.length); // 30
- console.log(str.trimStart().length); // 27
slice()截取
slice()方法截取某个字符串的一部分,返回一个新的字符串;
- str.slice(beginIndex)
- str.slice(beginIndex, endIndex)
接收两个参数,第一个参数是开始截取的索引位置,第二个参数是停止截取的索引位置(可选,若不传,默认到字符串结尾);左闭右开
如果参数为负值,则按beginIndex+strLength或endIndex+strLength来算;strLength是字符串的长度
- var str = 'good good study, day day up';
- console.log(str.slice(1,6)); // ood g
- console.log(str.slice(1,-9)); // 从1到(27-9)取字符串,结果为good good study, d
该方法返回一个字符串在开始索引到结束索引之间的一个子集;
- str.substring(indexStart)
- str.substring(indexStart, indexEnd)
有两个参数,第一个参数表示截取的开始索引,第二个参数可选,表示截取的截止位置(左闭右开),几个注意点:
- var str = 'good good study, day day up';
- console.log(str.substring(1,6)); // ood g
- console.log(str.substring(1,-9)); // 相当于(0,1) g
- console.log(str.substring(8, 1)); // 相当于(1,9) ood goo
和slice方法的区别是关于参数为负数的处理方法不同~
该方法用于在指定分隔字符处将字符串分隔成子字符串,并将其组成一个子字符串数组;
- str.split()
- str.split(separator)
- str.split(separator, limit)
第一个参数表示分隔符或正则表达式,如“|”,则表示依据字符串中的“|”进行分割,找到分隔符后,将其从字符串中删除,若参数是正则表达式,并且加了括号,则不用删除,返回全部组成的数组
第二个参数表示限定返回的分割片段数量。如分割成了5个片段,若此值设为3,则只返回前三个片段组成的数组
- var str = 'good good study, day day up';
- console.log(str.split(' ')); // ['good', 'good', 'study,', 'day', 'day', 'up']
- console.log(str.split(' ', 3)); // ['good', 'good', 'study,']
- console.log(str.split(/oo/)); // ['g', 'd g', 'd study, day day up']
- console.log(str.split(/oo/, 2)); // ['g', 'd g']
- console.log(str.split(/(oo)/)); // ['g', 'oo', 'd g', 'oo', 'd study, day day up']
- console.log(str.split(/(oo)/, 2)); // ['go', 'oo']
数组的join()方法作用相反
可连接多个字符串,并返回新连接后的字符串
concat(str1, str2, /* …, */ strN)
- var str = 'good good study, day day up';
- var str1 = 'and earn money';
- var str2 = 'make world beauty';
- console.log(str.concat(str1,str2)); // good good study, day day upand earn moneymake world beauty
该方法在之前正则表达式中已讲过,它返回由替换值代替后的新的字符串
str.replace(regexp|substr, newSubStr|function)
第一个参数可以是个正则表达式或字符串形式,第二个参数可以是要替换成的新的字符串或函数(用于创建新子字符串的函数,该函数的返回值作为新字符串进行替换);仅能够替换掉第一个匹配到的字符串; 若使用正则表达式进行匹配替换,可使用/g标识
- var str = 'good good study, day day up';
- console.log(str.replace('good', 'bad')); // bad good study, day day up
- console.log(str.replace(/good/, 'bad')); // bad good study, day day up
- console.log(str.replace(/good/g, 'bad')); // bad bad study, day day up
str.repeat(count)
将str重复count次
- var str = 'good';
- console.log(str.repeat(3)); // goodgoodgood