博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6字符串的扩展
阅读量:6061 次
发布时间:2019-06-20

本文共 2716 字,大约阅读时间需要 9 分钟。

字符串的扩展

1.字符的 Unicode 表示法

rest参数与数组

function log(...value) {  console.log(value);  console.log(...value);}log([1,2,3]);// [ [ 1, 2, 3 ] ]// [ 1, 2, 3 ]log(1,2,3);// [ 1, 2, 3 ]// 1 2 3复制代码

2.字符串的遍历

使用for...of循环遍历

for(let item of 'foo'){console.log(item); //'f' 'o' 'o'}复制代码

3.includes(),startsWith(),endsWith()

传统的字符串只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。 - includes():返回布尔值,表示是否找到了参数字符串。 - StartsWith():返回布尔值,表示参数字符串是否在原字符串的头部。 - endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

let s = 'Hello world!'s.startsWith("Hello") //trues.endsWith('!') //trues.includes('o') //true复制代码

这三种方法都支持第二个参数,表示开始搜索的位置。

let s = 'Hello world!';s.startsWith('world',6)//trues.endsWith('Hello',5)//true 前5个字符串s.includes('Hello',6)//false//上面代码表示,使用第二个参数n时,**endsWith的行为与其他两个方法有所不同。它针对前n个字符,**而其他两个方法针对从第n个位置直到字符串结束。复制代码

4.repeat()

repeat返回一个新字符串,表示将原字符串重复n次。

'x'.repeat(3)//'xxx''hello'.repeat(2)//'hellohello''na'.rapeat(0) //''复制代码

如果参数是小数,则会取整。

'na'.repeat(2.9) //'nana'复制代码

如果参数是负数或者是Infinity,会报错

'na'.repeat(Infinity)//RangError'na'.repeat(-1)//RangError复制代码

如果参数在0到-1之间则视为为0

'na'.repeat(-0.9) //''//参数NaN等同于0'na'.repeat(NaN)//''//如果参数是字符串则会先转换成数字'na'.repeat('na') //'''na'.rapeat('3')//'nanana'复制代码

5.padStart(),padEnd()

字符串补全的功能 padStart()用于头部补全,padEnd()用于尾部补全。

'x'.padStart(5,'ab');//'ababx''x'.padStart(4,'ab');//"abax"'x'.padEnd(5,'ab');//'xabab''x'.padEnd(4,'ab');//'xaba'复制代码

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

'xxx'.padStart(2,'ab') //'xxx' 返回原字符串'xxx'.padEnd(2,'ab') //'xxx' 返回原字符串复制代码

如果补全的字符串和原字符串,两者的长度超出了最大长度,则截取超出位数的补全字符串

'abc'.padStart(10,'0123456789') //"0123456abc"如果省略第二个参数,默认使用空格补全长度。'x'.padStart(4) //'   x''x'.padEnd(4) //'x   '复制代码

padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

'1'.padStart(10, '0') // "0000000001"'12'.padStart(10, '0') // "0000000012"'123456'.padStart(10, '0') // "0000123456"复制代码

另一个用途是提示字符串格式。

'12'.padStart(10,'YYYY-MM-DD') //'YYYY-MM-12''09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"复制代码

6.字符串嵌入变量

// 字符串中嵌入变量let name = "Bob", time = "today";`Hello ${name}, how are you ${time}?`复制代码

大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。

let x = 1;let y = 2;`${x} + ${y} = ${x + y}`// "1 + 2 = 3"`${x} + ${y * 2} = ${x + y * 2}`// "1 + 4 = 5"let obj = {
x: 1, y: 2};`${obj.x + obj.y}`// "3"复制代码

模板字符串之中还能调用函数。

function fn() {  return "Hello World";}`foo ${fn()} bar`// foo Hello World bar复制代码

如果模板字符串中的变量没有声明,将报错。

// 变量place没有声明let msg = `Hello, ${place}`;// 报错//由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出`Hello ${
'World'}`// "Hello World"模板字符串甚至还能嵌套。const tmpl = addrs => `
${addrs.map(addr => `
`).join('')}
${addr.first}
${addr.last}
`;复制代码

转载于:https://juejin.im/post/5c22dde9e51d45342a2544e8

你可能感兴趣的文章
Java Base64加密源码
查看>>
UI设计中的五种效果,打造不一样的视觉体验
查看>>
python echo
查看>>
一个程序员的毕业设计截图[附源码+jar包]
查看>>
7-puppet任务计划管理
查看>>
php 基础整理
查看>>
较标准的byte字节流操作类
查看>>
简单的浏览器内核的理解
查看>>
open/close table on mysql
查看>>
fir.im Weekly - 关于Log Guru开源、Xcode探索和 Android7.0适配
查看>>
Spring+Hibernate+Struts整合文档(SSH)
查看>>
CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?) 解决办法...
查看>>
EXT.NET中去除GridPanel 修改时的红色三角号
查看>>
读书笔记-失控
查看>>
我的友情链接
查看>>
maven 依赖中scope 参数作用
查看>>
某个板块只能管理员才能发帖 会员不能发帖的设置方法
查看>>
DHCP在企业网中的应用
查看>>
Red Hat Enterprise Virtualization培训开始啦
查看>>
python3对emqtt的简单操作
查看>>