ES6字符串的扩展

字符串的扩展

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") //true
s.endsWith('!') //true
s.includes('o') //true
复制代码

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

let s = 'Hello world!';
s.startsWith('world',6)//true
s.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 => `
  <table>
  ${addrs.map(addr => `
    <tr><td>${addr.first}</td></tr>
    <tr><td>${addr.last}</td></tr>
  `).join('')}
  </table>
`;

复制代码

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值