Skip to content
目录

字符串方法集合

1、charAt

返回指定索引出的字符

javascript
let str = "abcd";
str.charAt(0); // 'a'

2、charCodeAt

返回指定索引出的 unicode 字符

javascript
let str = "abcd";
str.charCodeAt(0); //97

3、indexof

判断一个字符第一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1

javascript
let str = "abcd";
str.indexOf("a"); //0
str.indexOf("e"); //-1

4、lastIndexOf

判断一个字符最后一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1

javascript
let str = "abcbd";
str.lastIndexOf("b"); //3
str.lastIndexOf("e"); //-1

5、concat

拼接 2 个字符串,返回一个新字符串,对原有字符串没有任何改变。

javascript
let str1 = "qwe";
let str2 = "abc";
let str3 = str1.concat(str2);
console.log(str3); //"qweabc"

6、substr(start,length)

start 所需的子字符串索引的起始位置。字符串中的第一个字符的索引为 0。

length 截取的长度

javascript
let str = "abcd";
let b = str.substr(2, 2);
console.log(b); //cd

7、substring(start,end)

start指明子字符串的起始位置,该索引从 0 开始起算。 end指明子字符串的结束位置,该索引从 0 开始起算。

substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点

如果 start 或 end为 NaN 或者为负数,那么将其替换为0

javascript
let str = "abcd";
let str2 = str.substring(1, 3);
let str3 = str.substring(3, 1);
let str4 = str.substring(-2, 3);
console.log(str2); //'bc'
console.log(str3); //'bc'
console.log(str4); //'abc'

8、slice(start,end)

start开始字符位置的索引

如果start 为负,将它作为length+start 处理,此处 length 为字符串的长度。

end结束字符位置的索引,不包括。

如果end 为负,将它作为length+end 处理,此处 length 为字符串的长度。

javascript
let str = "abcde";
let str1 = str.slice(1, 3);
let str2 = str.slice(-3, -1);
console.log(str1); //'bcd'
console.log(str2); //'bcd'

9、split(separator,limit)

separator 字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。

如果忽略该选项,返回包含整个字符串的单一元素数组。

用指定字符分割字符串,返回一个数组

limit该值用来限制返回数组中的元素个数

javascript
let str = "abcd";
var str1 = str.split("");
let str2 = str.split("", 3);
let str3 = str.split("b");
console.log(str1); //["a", "b", "c", "d"]
console.log(str2); //["a", "b", "c"]
console.log(str3); //["a", "cd"]

10、replace

替换指定字符,返回替换后新的字符串,对原有字符串有改变。

第一个参数可以是正则表达式,只能替换一次 ,配合正则模式修饰符 g 使用

javascript
let str = "aaaaee";
let reg = /a/g;
//或者
let reg = new RegExp("a", "g");
str.replace(reg, 1); //"1111ee"

11、match

可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。把找到的字符放在数组里,返回一个数组。

javascript
let str = "aaaa3ed33";
let reg = /a/g;
str.match(reg); //["a", "a", "a", "a"]

12、search(reExp)

返回与正则表达式查找内容匹配的第一个字符串的位置

javascript
let str = "abcd";
let str1 = str.rearch("bc");
let str2 = str.rearch(/bc/i);
console.log(str1); //1
console.log(str2); //1

13、toLowerCase()

字符串中的字母被转换成小写

javascript
let str = "ABCD";
let str1 = str.toLowerCase();
console.log(str1); //abcd

14、toUpperCase()

字符串中的字母转换成大写

javascript
let str = "abcd";
let str1 = str.toLowerCase();
console.log(str1); //ABCD

es6 新增加的方法

15、codePointAt()

能够正确处理 4 个字节储存的字符,返回一个字符的码点。

测试一个字符由两个字节还是由四个字节组成的最简单方法

javascript
function is32Bit(c) {
  return c.codePointAt(0) > 0xffff;
}

is32Bit("𠮷"); // true
is32Bit("a"); // false

16、fromCharCode 与 fromCodePoint

String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符(Unicode 编号大于 0xFFFF)。

javascript
String.fromCharCode(0x20bb7);
// "ஷ"

String.fromCodePoint方法,可以识别大于 0xFFFF 的字符,弥补了String.fromCharCode方法的不足。在作用上,正好与codePointAt方法相反。

javascript
String.fromCodePoint(0x20bb7); // "𠮷"

17、includes startsWith 与 endsWith

includes()返回布尔值,表示是否找到了参数字符串。

startsWith()返回布尔值,表示参数字符串是否在原字符串的头部。

endsWith()返回布尔值,表示参数字符串是否在原字符串的尾部。

javascript
let str = "abcd";
let str1 = str.includes("bc"); //true
let str2 = str.startsWith("a"); //true
let str3 = str.endsWith("d"); //true

这三个方法都支持第二个参数,表示开始搜索的位置

javascript
let str = "abcd";
let str4 = str.includes("bc", 1);
let str5 = str.startsWith("bc", 0);
let str6 = str.endsWith("d", 3);
console.log(str4); //true
console.log(str5); //false
console.log(str6); //false

18、repeat()

返回一个新字符串,表示将原字符串重复 n 次

javascript
let str = "abcd";
let str1 = str.repeat(3);
console.log(str1); //'abcdabcdabcd'

19、padStart(len,str)与 padEnd(len,str)

字符串补全长度的功能

如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全padEnd()用于尾部补全。

padStart 和 padEnd 一共接受两个参数

第一个参数用来指定字符串的最小长度

第二个参数是用来补全的字符串。

javascript
let str = "a";
let str1 = str.padStart(5, "123");
let str2 = str.padEnd(5, "123");
console.log(str1); //'1231a'
console.log(str2); //'a1231'

如果原字符串的长度>=len,则返回原字符串

javascript
"abc".padStart(2, "123"); //'abc'

如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度 len,则会截去超出位数的补全字符串。

javascript
"abc".padStart(10, "0123456789");
// '0123456abc'

如果省略第二个参数,默认使用空格补全长度

javascript
"x".padStart(4); // '   x'
"x".padEnd(4); // 'x   '

20、模板字符串

javascript
let user = {
  name: "list",
  info: "hello world"
};

console.log(`i am ${user.name},${user.info}`);
//i am list,hello world

21、raw()

javascript
`Hi\n${1 + 2}`;
String.raw`Hi\n${1 + 2}`;
//防止\n被转译换行