关于es6:ES6-第四章-字符串的新增方法

13次阅读

共计 3244 个字符,预计需要花费 9 分钟才能阅读完成。

前言

本章介绍字符串对象的新增办法。不罕用的办法不做重点笔记。
本章原文链接:字符串的新增办法

includes()、startsWith()、endsWith()

确定一个字符串是否蕴含在另一个字符串中。ES6 又提供了三种新办法。

  • includes() 办法用于判断一个字符串是否蕴含在另一个字符串中
  • startsWith() 办法用来判断以后字符串是否以另外一个给定的子字符串结尾
  • endsWith() 办法用来判断以后字符串是否是以另外一个给定的子字符串“结尾”的
办法名 返回值 形容 第二个参数:Num
includes() 布尔值 一个字符串是否蕴含参数字符串 从第 Num 个地位直到字符串完结
startsWith() 布尔值 一个字符串的结尾是否蕴含参数字符串 从第 Num 个地位直到字符串完结
endsWith() 布尔值 一个字符串的结尾是否蕴含参数字符串 示意前 Num 个字符
let sampleString = 'Hello world!';

const sample1 = sampleString.includes('llo');
const sample2 = sampleString.startsWith('H');
const sample3 = sampleString.endsWith('d!');
console.log(sample1, sample2, sample3); // true true true

// 应用第二个参数
const sample11 = sampleString.includes('llo', 1);
const sample12 = sampleString.startsWith('H', 1);
const sample13 = sampleString.endsWith('d!', 10);
console.log(sample11, sample12, sample13); // true false false

repeat()

repeat()办法返回一个新字符串,示意将原字符串反复 n 次。
参数为小数就会向下取整,为正数和无穷 (Infinity) 则会报错.

参数 解决
小数 向下取整
字符串 先转换成数字
正数 报错
Infinity 报错
const SAMPLE = 'Ha';
let sample1 = SAMPLE.repeat(4); // 反复四次
console.log(sample1); // HaHaHaHa

let sample2 = SAMPLE.repeat(1.8); // 参数为小书,向下取整
console.log(sample2); // Ha

let sample3 = SAMPLE.repeat('3'); // 参数为字符串
console.log(sample3); // HaHaHa

let sample4 = SAMPLE.repeat(-4); // 参数为正数
console.log(sample4); // 间接报错 Invalid count value

padStart(),padEnd()

ES2017 引入了字符串补全长度的性能。如果某个字符串不够指定长度,会在头部或尾部补全。

  • padStart()用于头部补全。
  • padEnd()用于尾部补全。

padStart()padEnd() 都承受两个参数

  • 参数一:字符串补全失效的最大长度。如果以后字符串小于指定的长度,则进行补全。
  • 参数二:用来补全的字符串。如果字符串长度过长,则会删除前面的多出的字符串。默认空格补全。
const SAMPLE = '368';

let newSample = SAMPLE.padStart(11, "000,");
let newSample1 = SAMPLE.padEnd(11, ",000");
console.log(newSample); // 000,000,368
console.log(newSample1); // 368,000,000

trimStart(),trimEnd()

ES2019 对字符串实例新增了 trimStart()trimEnd()这两个办法。去处字符串的空白符,它们的行为与 trim() 统一,空白符包含:空格、制表符 tab、换行符等 其余空白符等。

trim() 打消字符串的头尾空白符。
trimStart()打消字符串头部的空白符,别名为:trimLeft();
trimEnd()打消字符串尾部的空白符。别名为:trimRight();
返回值为一个新字符串,示意除去空格的调用字符串。

const SAMPLE = 'Ha';
let newSample = SAMPLE.trimStart();
let newSample1 = SAMPLE.trimEnd();
console.log(newSample); // Ha  
console.log(newSample1); //   Ha

matchAll()

matchAll()办法返回一个蕴含所有匹配正则表达式的后果, 返回的是一个迭代器 (Iterator)。
这块不深刻,前面正则表达式扩大再进行详解。

const string = 'sample1sample2sample3';
const regex = /sample/g;

for (const match of string.matchAll(regex)) {console.log(match);
}
// 遍历输入
/*
['sample', index: 0, input: 'sample1sample2sample3', groups: undefined]
['sample', index: 7, input: 'sample1sample2sample3', groups: undefined]
['sample', index: 14, input: 'sample1sample2sample3', groups: undefined]
*/

replaceAll()

简略来说,能够一次性替换所有匹配。

// 语法
String.prototype.replaceAll(searchValue, replacement);

replaceAll() 办法返回一个新字符串,新字符串所有满足 pattern 的局部都已被replacement 替换

两个参数

  • 参数一:能够是一个字符串,也能够是一个全局的正则表达式(带有 g 修饰符)。
  • 参数二:第二个参数 replacement 是一个字符串,示意替换的文本,其中能够应用一些非凡字符串。除了为字符串,也能够是一个函数,该函数的返回值将替换掉第一个参数 searchValue 匹配的文本。

    • $&:匹配的字符串。
    • $ `:匹配后果后面的文本。
    • $':匹配后果前面的文本。
    • $n:匹配胜利的第 n 组内容,n 是从 1 开始的自然数。这个参数失效的前提是,第一个参数必须是正则表达式。
    • $$:指代美元符号 $。
const SAMPLE = 'HaHa,huhu,hehe';
let sample1 = SAMPLE.replaceAll('h', 'H');
let sample2 = SAMPLE.replaceAll('H', () => 'h');
console.log(sample1); // HaHa,HuHu,HeHe
console.log(sample2); // haha,huhu,hehe

String.raw()

ES6 还为原生的 String 对象,提供了一个 raw() 办法。是用来获取一个模板字符串的原始字符串的,在大多数状况下, String.raw()是用来解决模版字符串的。

console.log(`Hi\n${2+3}!`); // 
/*
输入
Hi
5!
*/
console.log(String.raw`Hi\n${2+3}!`); // 输入 Hi\n5!

String.fromCodePoint()

String.fromCodePoint() 静态方法返回应用指定的代码点序列创立的字符串。能够辨认大于 0xFFFF 的字符,补救了 String.fromCharCode() 办法的有余。

console.log(String.fromCodePoint(9731, 9733, 9842, 0x2F804));
// 间接输入 ☃★♲你
正文完
 0