字符串
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'}`;