ES6字符串的扩展方法及模版字符串
ES6加强了对unicode的支持
ES5中js允许采用/uXXXX的形式表示一个字符,XXXX表示字符的unicode码点。
这种码点只限于\uXXXX~\uFFFF之间的字符。超过这个范围,必须使用双字节的形式表示,但是ES5无法识别。
ES6中,将超过两个字节的组成的字符的码点放在一堆花括号里面就可以正确的识别。
示例
//ES6
const str1 = '`\u{20bb7}'
console.log('str1',str1) //str1 吉
//ES6
const str2 = '`\u{20bb7}'
for(let i = 0;i<str1.length;i++){
console.log('for',str1[i]) //for ? for ?
}
for(let word of str1)
console.log('for of',str2) // for of 吉
总结
for of 的应用范围比传统的for循环要广,在字符串中使用循环用for of
字符串扩展api
1.判断字符串是否包含指定字符串的几个方法
includes,startsWith,endsWith
let str = '123TO321'
console.log('includes',str.includes('TO')) //includes true
console.log('startsWith',str.startsWith('TO',3)) //startsWith true
console.log('startsWith',str.startsWith('TO')) //startsWith false
console.log('endsWith',str.endsWith('TO',5)) //endsWith true
console.log('endsWith',str.endsWith('TO')) //endsWith false
2.字符串补全的方法
padStart,padEnd(length补全后的字符串长度,str用于补全的字符串)
let str = 'apple'
str = str.padStart(8,'111')
console.log('padStart',str)
3.模版字符串
const name = 'nick'
const age = 18
const str = "我叫'+name+',我今年'+age+'岁"
console.log('str-es5',str) //str-es5 我叫nick,我今年18岁
const str2 = `我叫${name},我今年${age}岁`
console.log('str-es6',str2) //str-es6 我叫nick,我今年18岁
总结
1)使用模版字符串表示多行字符串时,所有的空格和缩紧都会保留在输出之中。
2)模版中引入变量,要用${变量名}
的形式引入。
3)模版字符串中大括号中的值不是字符串时,将按照一般的规则转为字符串。Eg:大括号中是一个对象,将默认调用对象的toString方法。
4)模版字符串中的${ }
内部可以放入任意js表达式,可以进行运算,可以引用对象属性,可以调用函数,甚至还能嵌套调用自己本身。