新增的字符串方法

字符串
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
repeat(): 返回一个新字符串,表示将原字符串重复n次.

1 trim()清除空白 [Es6]

2 for of 循环字符串

var str = "𠮷";

for(var i=0; i<str.length; i++) {
    console.log(str[i]);
}

for(let i of str) {
    console.log(i);
}

可以看出,传统的for循环产生乱码,因为不认识UTF16的编码。

3 includes 判断子字符串

传统上,JS只有indexOf方法确定一个字符串是否包含在另一个字符串中,ES6又提供了三种新的方法。

'abc'.includes('a')  // true
'abc'.indexOf('a') >= 0 // true

4 startsWith 和 endsWith

var s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true

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

var s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false

上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

5 repeat重复字符串

'hello'.repeat(3); // hellohellohello

'hello'.repeat(0) === '' //true,得到空字符串

'hello'.repeat(NaN) === '' //true,得到空字符串

'hello'.repeat('a') // 提醒,a转为为int得NaN 若为"3" 则转换为数字

'hello.repeat(-1)' // RangeError: Invalid count value 小于-1或者为infinity 则报错

'hello.repeat(0.9)' // "" , 空字符串 取整为0 -1到0之间也会被取整

6 padStart(),padEnd() [ES7]

打开实验性的js来进行测试。
字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart用于头部补全,padEnd用于尾部补全。

'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'

上面代码中,padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

'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"

7 模板字符

ES6用反引号’`'包住字符串,可以让字符串多行书写,也可以自由的嵌入变量.

例: 旧时,我们将用户信息写入DOM中,要这样

let stu = {name : 'lucy' , age:19};
$('#rs').html("My name is " + stu.name " +
",and my age is " + stu.age + "years old");

对于多行字符串容易报错.
现在,用模板语法,我们可以这样

let str = `My name is ${stu.name},and my age is ${stu.age} years old,
and last year , I am ${stu.age + 1} years;
`;

模板内的${}存放变量
模板内的大括号{}可以放任意合法的JS表达式,意味着:

function t(){
  return 'world';
}

let str = `hello , ${t()} , ${7+9} , ${'ok'}`;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值