javascript常用字符串方法总结

302 阅读5分钟

1. 获取字符串长度

javascript中字符串的属性length,用于获取字符串的长度;数组和函数同样有这个属性

const str = 'gmx-white';
str.length; // 9

2. 获取字符串指定位置的值

1)下标;2)at;3)chatAt;4)chatCodeAt

下标

str[index]:字符串有length属性,因此可以通过下标获取对应位置的值,但是index不能超过length,不能为负数。

const str = 'gmx-white'
str[1];  // m
str[99];  // undefined
str[-1];  // undefined

at

str.at(index):获取index位置的字符,允许为负数(倒数),但不能超过length

const str = 'gmx-white'
str.at(2);  // x
str.at(10); // undefined
str.at(-2);  // t
str.at(-10);   // undefined

chatAt

str.charAt(index)index0~length-1的整数,不能为负数,index超出则返回空字符。

const str = 'gmx-white'
str.charAt(3);  // -
str.charAt(-1);  // 
str.charAt(10);  // 

charCodeAt

str.charCodeAt(index):返回 0 到 65535 之间的整数,表示index处的字符的 UTF-16 代码单元

const str = 'gmx-white'
str.charCodeAt(4);  // 119
// index:0~length-1之间
str.charCodeAt(-1);  // NaN
str.charCodeAt(10);  // NaN

3. 字符串搜索

搜索指定字符串在str中的位置

1)startWith;2)endWith;3)indexOf;4)lastIndexOf;5)includes

startWith

str.startWith(searchString[, position]):判断searchString是否在str的开头。

const str = 'gmx-white'
str.startsWith('gmx');     // true
str.starstWith('-', 3);  // true
str.starstWith('mx');    // false

endsWith

str.endsWith(searchString[, length]):判断searchString是否在str的末尾。
参数length默认为str.length,从str的前length的字符串中查找。

const str = 'gmx-white'
str.length;  // 9
str.endsWith('white');     // true
str.endsWith('whit', 8);  // true
str.endsWith('whit');    // false

indexOf

str.indexOf(searchValue [, fromIndex]):返回第一次出现的searchValue的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。

const str = 'gmx-white'
str.indexOf('gmx');      // 0
str.indexOf('gmx', 10);  // 1
str.indexOf('gmx--');    // 1

lastIndexOf

str.lastIndexOf(searchValue[, fromIndex]):返回searchValue最后一次出现的索引,在一个字符串中的指定位置 fromIndex从后向前搜索。如果没找到这个特定值则返回-1 。

const str = 'gmx-gmx-white'
str.lastIndexOf('gmx');  // 4
str.lastIndexOf('gmx', 3);  // 0
str.lastIndexOf('gx');  // -1

includes

str.includes(searchString[, position]):从position位置(默认为0)开始查找searchString

const str = 'gmx-white'
str.includes('gmx');  // true
str.includes('gmx', 4);  // false
str.includes('gmx', 10); // false

4. 字符串模式匹配

根据字符串或者正则表达式匹配源字符串
1)match;2)matchAll;3)search;4)replace;5)replaceAll

match

str.match():检索返回一个字符串匹配正则表达式的结果。该数组的内容依赖于 regexp 是否具有全局标志 g

const str = 'gmx-white'
const regexWithg = /[a-z]/g
const regex = /[a-z]/g
str.match(regexWithg);  // ['g', 'm', 'x', 'w', 'h', 'i', 't', 'e']
str.match(regex);   // ['g', index: 0, input: 'gmx-white', groups: undefined]

matchAll

str.matchAll(regex):返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。regexp 必须具有全局标志 g,否则报TypeError

const str = 'gmx-white'
const regex = /(gmx)-(white)/g
const res = [...str.matchAll(regex)]  // ['gmx-white', 'gmx', 'white'] 

search

str.search(regexp):执行正则表达式和对象之间的搜索匹配。不支持正则表达式g标志

const str = "gmx-gmx-white";
const regex = /gmx/g  // 只查找第一个匹配
str.search(regex, 'GMX');  // 0

replace

str.replace(regexp|substr, newSubStr|function):返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。

const str = "gmx-gmx-white";
const regex = /gmx/g
str.replace('gmx', 'GMX');  // GMX-gmx-white
str.replace(regex, 'GMX');  // GMX-GMX-white

replaceAll

str.replaceAll(regexp|substr, newSubstr|function):返回一个新字符串,新字符串所有满足 pattern 的部分都已被replacement 替换。regex必须加g,否则报TypeError

const str = "gmx-gmx-white";
const regex = /gmx/g
str.replaceAll('gmx', 'GMX');  // GMX-GMX-white
str.replaceAllregex, 'GMX');  // GMX-GMX-white

更多正则模式匹配方法,可见juejin.cn/post/709560…

5. 字符串拼接/扩展

1)concat;2)padEnd;3)padStart;4)repeat

concat

str.concat(str1, [, ...strN]):返回拼接后的字符串,不改变原字符串

const str = 'gmx-white'
const str1 = str.concat(...[' is', ' very']);  // "gmx-white is very"
const str2 = str1.concat(' good');  // "gmx-white is very good"

padEnd

str.padEnd(targetLength [, padString]):用一个字符串填充当前字符串,返回填充后达到指定长度的新的字符串。从当前字符串的末尾(右侧)开始填充。padString默认为空格。
注意:若padString.length+str.length>targetLength,则截断padString

const str = "gmx-white";
str.padEnd(15, 'a');  // gmx-whiteaaaaaa
str.padEnd(15, str);  // gmx-whitegmx-wh

padStart

str.padStart(targetLength [, padString]):作用与padEnd()类似,从左侧开始填充。

const str = "gmx-white";
str.padStart(15, 'a');  // aaaaaagmx-white
str.padStart(15, str);  // gmx-whgmx-white

repeat

str.repeat(count):构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。
count为正数,浮点隐式转换,负数报RangeError

const str = "gmx-white";
str.repeat(2);  // gmx-whitegmx-white

6. 字符串截取

取出字符串的一部分 1)slice;2)substring;3)substr

slice

str.slice(beginIndex[, endIndex]):提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。

const str = "gmx-gmx-white";
str.slice(2);   // x-gmx-white
str.slice(2,6);  // x-gm

substring

str.substring(indexStart[, indexEnd]):返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。作用与slice相同

const str = "gmx-gmx-white";
str.substring(2);  // x-gmx-white  
str.substring(2,6);  // x-gm

substr

str.substr(start[, length]):返回从start索引开始的length字符串,浏览器支持但是Web标准已废弃,不展开介绍。

7. 字符串大小写转换

1)toLowerCase;2)toUpperCase

toLowerCase

str.toLowerCase():调用该方法的字符串值转为小写形式,并返回新字符串。

const str = "gmx-GMX-white";
str.toLowerCase();  // gmx-gmx-white
str;  // gmx-GMX-white

toUpperCase

str.toUpperCase():将调用该方法的字符串转为大写形式并返回(如果调用该方法的值不是字符串类型会被强制转换)。

const str = "gmx-GMX-white";
str.toUpperCase();  // GMX-GMX-WHITE
str;  // gmx-GMX-white

8. 删除首尾空白符

1)trim;2)trimStart;3)trimEnd

trim

str.trim():去除首尾空白符,返回新字符串

const str = '  gmx-white   '
str.trim();  // gmx-white

trimStart

str.trimStart();str.trimLeft();两个函数是同一个用法,去除开头的空白符。

const str = "  gmx-white   ";
str.trimLeft();  // 'gmx-white   '
str.trimStart();

trimEnd

str.trimEnd();str.trimRight();去除字符串末端的空白字符

const str = "  gmx-white   ";
str.trimRight();  // '  gmx-white'
str.trimEnd();

9. 获取字符串原始值

valueOf

str.valueOf():返回 String 对象的原始值

const str = new String('gmx-white');
str;  // String {'gmx-white'}
str.valueOf(str);  // gmx-white

toString

str.toString():返回指定对象的字符串形式。

const str = new String('gmx-white');
str;  // String {'gmx-white'}
str.toString(str);  // gmx-white