前言

本章介绍字符串对象的新增方法。不常用的方法不做重点笔记。

本章原文链接:字符串的新增方法

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));
// 直接输出 ☃★♲你

ES6学习 第四章 字符串的新增方法的更多相关文章

  1. ES6 第五章 字符串的新增方法 具体参照 http://es6.ruanyifeng.com

    1.FormCodePoint 对象方法 用于从 Unicode 码点返回对应字符,可以识别原来es5不能识别的大于0xFFFF的码点. String.fromCodePoint(0x20BB7) / ...

  2. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  3. ES6学习 第五章 正则的扩展

    前言 本章介绍正则的扩展.有些不常用的知识了解即可. 本章原文链接:正则的扩展 RegExp 构造函数 从 ES6 开始,如果RegExp构造函数第一个参数是一个正则对象,并且第二个标志存在且为标志参 ...

  4. ES6中字符串的新增方法梳理

    1.String.fromCodePoint(); String,fromCodePoint()方法可以认为是对String.fromCharCode()方法的扩展,这两个方法的共同点在于都是用于Un ...

  5. Java基础知识二次学习--第四章 异常

    第四章 异常处理   时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: ...

  6. C#高级编程 (第六版) 学习 第四章:继承

    第四章 继承 1,继承的类型 实现继承: 一个类派生于一个基类型,拥有该基类型所有成员字段和函数. 接口继承 一个类型只继承了函数的签名,没有继承任何实现代码.   2,实现继承 class MyDe ...

  7. python学习(四)字符串学习

    #!/usr/bin/python # 这一节学习的是python中的字符串操作 # 字符串是在Python中作为序列存在的, 其他的序列有列表和元组 # 1. 序列的操作 S = 'Spam' # ...

  8. c语言学习笔记第四章——字符串和格式化输入、输出

    B站有视频演示 本章学习printf函数的输入输出,字符串的定义与实用. 字符串 字符串(character string)是一个或多个字符的序列,如下所示: "Zing went the ...

  9. 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...

  10. Intel汇编语言程序设计学习-第四章 数据传送、寻址和算术运算-下

    4.3  和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的.开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操 ...

随机推荐

  1. iview 表单有值却校验失败

    转载请注明出处: iview 表单校验数值的时候,表单有值,却在提交的时候,提示表单校验失败: 解决方案: 1. IviewUI的文档里查到了rules规则里面有个校验类型的属性字段type rule ...

  2. Blazor模式讲解

    Blazor的三种模式 Blazor Server: Blazor Server在 ASP.NET Core 应用中支持在服务器上托管 Razor 组件. 可通过 SignalR 连接处理 UI 更新 ...

  3. SV interface and Program3

    时钟域的理解 在仿真过程中,时钟跳变的一瞬间,CPU将时间域划分为不同的时钟域执行不同的代码 信号在芯片中都是金属丝,在进行跳变的时候都是电容的充放电过程,通常使用时钟上升沿进行模拟,而不使用时钟下降 ...

  4. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.14)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...

  5. nexus的简单安装与使用

    nexus的简单安装与使用 文件下载 官网上面下载文件比较麻烦, 得科学一些 https://www.sonatype.com/download-oss-sonatype 选择oss 开源版进行下载 ...

  6. [转帖]MySQL: Convert decimal to binary

    Last Update:2018-12-05 Source: Internet  Author: User Tags decimal to binary mysql code Developer on ...

  7. Grafana监控minio的极简方法

    Grafana监控minio的极简方法 背景 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. 方式和方法 minio其实集成 ...

  8. [转帖]《Linux性能优化实战》笔记(二)—— CPU 上下文切换(上)

    上一篇的最后一个例子,在多个进程竞争CPU时,我们看到每个进程实际上%usr部分只有20%多,70%多是在wait,但是load远远高于单个进程使用CPU达到100%. 这让我想到之前看的RWP公开课 ...

  9. [转帖]军备芯片14nm对比5nm,在战场上差距在哪里?

    https://www.eet-china.com/mp/a207185.html 现在全球已经打响科技之战,每个国家都在力求让自己做到足够拔尖.美国商务部长就曾自曝家底说,美国制定两套战略应对在芯片 ...

  10. [转帖]ssh时不输入YES

    vim /etc/ssh/ssh_config 60行新添加 StrictHostKeyChecking no