ES6新增的字符串API

689 阅读4分钟

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

  • 支持第二个参数,表示开始搜索的位置
  • 使用第二个参数n时,表示从第n个位置开始直到字符串结束
let str = "Hello world!";
console.log(str.includes("o")); // true
console.log(str.includes("w")); // true
console.log(str.includes("w", 7)); // false

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

  • 支持第二个参数,表示开始搜索的位置
  • 使用第二个参数n时,表示从第n个位置开始直到字符串结束
let str = "Hello world!";
console.log(str.startsWith("Hello")); // true
console.log(str.startsWith("world")); // false
console.log(str.startsWith("world", 6)); // true

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

  • 支持第二个参数,表示开始搜索的位置
  • 使用第二个参数n时,它针对前n个字符
let str = "Hello world!";
console.log(str.endsWith("Hello")); // false
console.log(str.endsWith("!")); // true
console.log(str.endsWith(" ", 6)); // true

repeat() 方法返回一个新字符串,表示将原字符串重复n次

  • 参数是小数,会被向下取整
  • 参数如果是 Infinity 或者是 负数,会报错
  • 0到-1之间的数等同于0,NaN也等同于 0
  • 参数是字符串,则会先转换成数字
console.log("x".repeat(3)); // xxx
console.log("hello".repeat(2)); // hellohello
console.log("na".repeat(0)); // ''
// 参数是小数,会被向下取整
console.log("na".repeat(2.9)); // nana
// 参数如果是 Infinity 或者是 负数,会报错
// console.log("na".repeat(Infinity)); // 报错
// console.log("na".repeat(-1)); // 报错
// 0到-1之间的数,NaN,等同于 0
console.log("na".repeat(-0.9)); // ''
console.log("na".repeat(NaN)); // ''
// 参数是字符串,则会先转换成数字
console.log("na".repeat("na")); // ''
console.log("na".repeat("3")); // nanana

padStart() 字符串补全长度的功能,用于头部补全

  • 前提:如果某个字符串不够指定长度,会在头部补全
  • 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串
  • 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串
  • 如果省略第二个参数,默认使用空格补全长度
console.log("x".padStart(5, "ab")); // ababx
console.log("x".padStart(4, "ab")); // abax
// 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串
console.log("xxx".padStart(2, "ab")); // xxx
// 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
console.log("abc".padStart(10, "0123456789")); // 0123456abc
// 如果省略第二个参数,默认使用空格补全长度。
console.log("x".padStart(4)); // '   x'

// 常见用途:
// 为数值补全指定位数
console.log("1".padStart(10, "0")); // 0000000001
console.log("12".padStart(10, "0")); // 0000000012
console.log("123456".padStart(10, "0")); // 0000123456
// 提示字符串格式
console.log("12".padStart(10, "YYYY-MM-DD")); // YYYY-MM-12
console.log("09-12".padStart(10, "YYYY-MM-DD")); // YYYY-09-12

padEnd() 字符串补全长度的功能,用于尾部补全

  • 前提:如果某个字符串不够指定长度,会在尾部补全
  • 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串
  • 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串
  • 如果省略第二个参数,默认使用空格补全长度
console.log("x".padEnd(5, "ab")); // xabab
console.log("x".padEnd(4, "ab")); // xaba
// 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串
console.log("xxx".padEnd(2, "ab")); // xxx
// 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
console.log("abc".padEnd(10, "0123456789")); // abc0123456
// 如果省略第二个参数,默认使用空格补全长度。
console.log("x".padEnd(4)); // 'x   '

trimStart() 消除字符串头部的空格,返回的是新字符串,不会修改原始字符串

  • trimLeft()trimStart() 的别名
let str = ' abc ';
console.log(str.trimStart());  // 'abc '
console.log(str.trimLeft());   // 'abc '

trimEnd() 消除字符串头部的空格,返回的是新字符串,不会修改原始字符串

  • trimRight()trimEnd() 的别名
let str = ' abc ';
console.log(str.trimEnd());    // ' abc'
console.log(str.trimRight());  // ' abc'

matchAll() 返回一个正则表达式在当前字符串的所有匹配,

详细的用法,可以查看ECMAScript 6 入门