1.字符串的子串识别

传统上,Javascript 只有indexof 方法,用来确定一个字符串是否包含在另一个字符串中。如:

//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
//如果要检索的字符串值没有出现,则该方法返回 -1。
let a = 'abcde';
console.log(a.indexOf('cd')); //2

现在ES6 又提供了三种新方法。每个方法都可接收2个参数,需要检测的子字符串,以及开始匹配的索引位置。

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

    let a = 'abcdef';
    console.log(a.includes('cd')); //true
    console.log(a.includes('ab', 1)); //false (从第1个位置开始找)
  • starsWith(str, index): 返回布尔值,表示参数字符串是否在原字符串的头部
    let a = 'abcadef';
    console.log(a.startsWith('ab')); //true
    console.log(a.startsWith('ab', 2)); //false
  • endsWith(str, index): 返回布尔值,表示参数字符串是否在原字符串的尾部
    let a = 'abcadef';
    console.log(a.endsWith('ef')); //true
    console.log(a.endsWith('bc', 3)); //true (前3个字符, bc是否在尾部)

如果只是需要判断某字符串中是否包含子字符串,那么推荐使用ES6 新增的方法;如果需要找到在字符串中的位置,那么就使用 indexOf() 方法。

2. repeat()

repeat 方法,接收一个Number类型的数据,返回一个新的字符串,表示将原字符串重复 n 次。

console.log('a'.repeat(3)); //aaa

3. padStart(), padEnd()

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

它们一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

如果原字符的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。

console.log('a'.padStart(5,'xx')); //xxxxa
console.log('a'.padEnd(5,'xx')); //axxxx //如果用来补全的字符与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串
console.log('aa'.padStart(5,'xx')); //xxxaa //省略第二个参数,默认使用空格补全长度
console.log('a'.padStart(5)); //' a'

4.字符串模板

字符串模板最简单的语法,是使用反引号(`)来包裹普通字符串

let a = 'hello';
console.log(a+', zhangsan'); //以前,我们这样做
console.log(`${a}, zhangsan`); //现在,我们这样做

我们不再需要使用 + 来向字符串插入变量。而是使用 ${params} 直接插入需要添加到字符串的位置。这种方式也叫字符串占位符,变量部分可以用JS的任意表达式进行替换。

5.标签模板

模板字符串的功能不仅仅是上面这些。它还可以紧跟在一个函数名后面,该函数将被调来处理这个字符串模板。这被称为“标签模板”功能。

标签模板其实并不是模板,而是函数调用的一种特殊形式。“标签”指的是函数,紧跟在函数名后面的字符串模板是它的参数。如果字符串模板里面有变量,会先将字符串模板处理成多个参数,再调用函数。

let name = 'lisi';
let city = 'Beijing'
let res = tag`hello ${name}, \n welcome to ${city}`;
function tag (literals, ...values){
console.log(`literals: `,literals);
console.log(`values: `,values);
}

运行结果:

第一个参数literals 是数组,包含被js解释过的字面量字符串, 第二个参数values 是每个替换位的解释值。数组 literals 的长度永远比 values 多1。

ES6学习笔记之字符串新增方法的更多相关文章

  1. ES6学习笔记(对象新增方法)

    1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0. ...

  2. es6学习笔记--模板字符串

    这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...

  3. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  4. ES6学习笔记(二)——字符串扩展

    相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习 ...

  5. ES6学习笔记之字符串的扩展

    字符串的for of ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历. const str='abcd'; for(let s of str){ console.log(s ...

  6. ES6学习笔记(3)----字符串的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 字符串的扩展ES6之前只能识别\u0000 - \uFFFF 之间的字符,超过此范围,识别会出错 ...

  7. 【Python学习笔记】字符串拼接方法(5种)总结

    字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...

  8. ES6 - 基础学习(4): 模板字符串和字符串新增方法

    模板字符串 模板字符串:我理解为将字符串格式化.模板化,将字符串加强处理,此处的模板有动词的意思. 字符串模板基本格式: `xxxxxx`(前后都用反引号[tab键上面按键]引起来).除了作为普通字符 ...

  9. JS&ES6学习笔记(持续更新)

    ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ...

随机推荐

  1. mybaties longtext 类型不能映射到自动生成的文件

    假设数据库里有 fun_detail 这样一个字段. 使用 MyBatis Generator 生成的 XXExample 文件,发现没有 fun_detail 这个字段. 需要加一行: <co ...

  2. ES6学习-4 解构赋值(1)数组的解构赋值

    解构赋值是ES6很大的一个提升,为我们带来了很多方便,但用不好,会使程序的可读性变差,所以用时要注意,尽量保持程序的易读性. 数组解构赋值 在JS没有支持解构赋值之前,我们声明几个变量并赋值通常都是像 ...

  3. Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时

    概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...

  4. 015.Python函数名的使用以及函数变量的操作

    一 函数名的使用 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限 1.1 函数名是个特殊的变量,可以当做变量赋值 def func(): p ...

  5. linux进阶之gitlab仓库搭建及免密使用

    一.Gitlab简介 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...

  6. linux 创建网桥

    由于最近项目需验证个问题,需求是要创建一个虚拟机网桥,在使用ifconfig命令查看时让docker0网桥不在第一个显示,因此,我们创建一个虚拟网桥让它排在第一位置 项目使用Centos7系统,因此使 ...

  7. Google Hacking 搜索引擎攻击与防范

    Google Hacking,有时也会被称为 Google dorking,是一种利用谷歌搜索的高级使用方式进行信息收集的技术.这个概念最早在2000年由黑客 Johnny Long 提出并推广,一系 ...

  8. rabbit_消费者

    import pika import json import time import os import ast import uuid import time import json import ...

  9. Lidar激光雷达市场

    Lidar激光雷达市场 近年来,激光雷达技术在飞速发展,从一开始的激光测距技术,逐步发展了激光测速.激光扫描成像.激光多普勒成像等技术,如今在无人驾驶.AGV.机器人等领域已相继出现激光雷达的身影. ...

  10. 华为计算平台MDC810发布量产

    华为计算平台MDC810发布量产 塞力斯的发布会刚刚结束,会上塞力斯SF5自由远征版也确实让人眼前一亮. 全球首款4S级加速能力.1000+km续航新能源作为这款车的卖点. 续航1000+km成了最近 ...