第二章 字符串扩展 正则表达式扩展

作者 : 开心源码 本文共2403个字,预计阅读时间需要7分钟 发布时间: 2022-05-13 共207人阅读

前言

该部分为书籍 深入了解ES6 第二章(字符串与正则表达式)笔记

更好的 Unicode 支持

不理解, 暂不做理解

正则表达式的改动

暂不做理解

  • 添加 u 标志
  • 添加 y 标志
  • 复制正则表达式
  • flags 属性

字符串的其余改动

String.prototype原型上添加的方法

  • includes():在给定 文本存在于字符串中的任意位置时会返回true,否则返回false
  • startsWith(): 在给定文本出现在字符串起始处时返回 true ,否则返回 false ;
  • endsWith(): 在给定文本出现在字符串结尾时处返回 true, 否则返回 false

每个方法都接受两个参数: 需要搜索的文本, 以及可选的搜索起始位置索引.当提供了第二
个参数时, includes() 与 startsWith() 方法会从该索引位置开始尝试匹配;而
endsWith() 方法会将字符串长度减去该参数,以此为起点开始尝试匹配。

var msg = "Hello world!";console.log(msg.startsWith("Hello")); // trueconsole.log(msg.endsWith("!")); // trueconsole.log(msg.includes("o")); // trueconsole.log(msg.startsWith("o")); // falseconsole.log(msg.endsWith("world!")); // trueconsole.log(msg.includes("x")); // falseconsole.log(msg.startsWith("o", 4)); // trueconsole.log(msg.endsWith("o", 8)); // trueconsole.log(msg.includes("o", 8)); // false
  • repeat()方法:接受一个参数作为字符串的重复次数, 返回一个将初始字符串重复指定次数的新字符串

    //在需要产生缩进的地方会有用处// indent 使用了肯定数量的空格var indent = " ".repeat(4),indentLevel = 0;// 每当你添加缩进var newIndent = indent.repeat(++indentLevel);

模板字面量(“)

模板自卖能量是 ES6 针对 JS 直到 ES5 仍然完全缺失的如下功能的回应:

  • 多行字符串: 针对多行字符串的形式概念;
  • 基本的字符串格式化: 将字符串部分替换为已存在的变量值得能力;
  • HTML转义: 能转换字符串以便将其安全插入到 HTML 中的能力

模板字面量以一种新的方式处理了这些问题, 而并未给 JS 已有的字符串增加额外功能

特性一: 多行字符串

  • 反引号之内的所有空白符都是字符串的一部分, 也可以使用换行符

    let message = `Multiline          string`;console.log(message); // "Multiline                    //        string"console.log(message.length); // 31// 也可以在模板字面量中使用 \n 来指示换行的插入位置let message = `Multiline\nstring`;console.log(message); // "Multiline// string"console.log(message.length); // 16

特性二: 制造替换位

  • 替换位由起始的 ${ 与结束的 } 来界定之间允许放入任意的 JS表达式

    // 模板字面量能访问到作用域中任意的可访问变量, 作用域就是当前定义位置的作用域let count = 10,  price = 0.25,  message = `${count} items cost $${(count * price).toFixed(2)}.`;console.log(message); // "10 items cost $2.50."

特性三: 标签化模板

  • 一个模板标签( template tag )能对模板字面量进行转换并返回最终的字符串值,标签在模板的起始处被指定,即在第一个 ` 之前

    可以通过这个来定制化模板字面量返回的字符串

    let count = 10,  price = 0.25,  message = passthru`${count} items cost $${(count * price).toFixed(2)}.`;console.log(message); // "10 items cost $2.50."/*  函数的参数解析:    1. literals数组:       * 包含在首个替换位之前的空字符串("")      * 在首个替换位与第二个替换位之间的字符串(" items cost $);      第二个替换位之后的字符串(".");   2. 剩余参数(不定参数):      * 第一个替换位 ${clunt} 的解释值 10,      * 第二个替换位 ${ (count * price).toFixed(2) } 的解释值 2.50      * 假如还有替换位的话, 以此类推*/function passthru(literals, ...substitutions) {  let result = "";      // 仅使用 substitution 的元素数量来进行循环  for (let i = 0; i < substitutions.length; i++) {      result += literals[i];      result += substitutions[i];  }      // 增加最后一个字面量  result += literals[literals.length - 1];  return result;}
  • 使用模板字面量中的原始值

    使用内置的 String.raw() 标签, 可以访问字符在转义之前的形式

    let message1 = `Multiline\nstring`,  message2 = String.raw`Multiline\nstring`;console.log(message1); // "Multiline// string"console.log(message2); // "Multiline\\nstring"
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 第二章 字符串扩展 正则表达式扩展

发表回复