字符串遍历
字符串遍历接口:
1、for ... of .. (注: 除了遍历字符串,这个遍历器最大的优点是可以识别大于oxFFFF的码点)
for (let codePoint of 'sufeng') { console.log(codePoint) } // "s" // "u" // "f" // "e" // "n" // "g"
模板字符串
ES6引入了模板字符串解决这个问题,模板字符串是增强版的字符串,用反引号·``切换到英文输入法模式下找到电脑键盘 Esc 下面的键,敲两下就出现了反引号,它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。
模板字符串中嵌入变量,需要将变量名写在${}之中,大括号内部可以放入任意的javascript表达式,可以进行运算,以及引用对象属性,不过如果大括号内的值不是字符串,将按照一般规则转为字符串,比如,大括号中是一个对象,将默认调用对象的toString方法。
模板字符串甚至还能嵌套,示例如下
const tmpl = addrs => ` <table> ${addrs.map(addr => ` <tr><td>${addr.first}</td></tr> <tr><td>${addr.last}</td></tr> `).join('')} </table> `; . . . const data = [ { first: '<Jane>', last: 'Bond' }, { first: 'Lars', last: '<Croft>' }, ]; console.log(tmpl(data));
includes() 、startsWith() 、 endWith()
传统上,JavaScript 只有indexof方法,可以用来确定一个字符串是否包含在另一个字符串中,ES6又提供了三种新方法。
includes(): 返回布尔值,表示是否找到了参数字符串
startsWith(): 返回布尔值,表示参数字符串是否在原字符串的头部
endsWith(): 返回布尔值,表示参数字符串是否在原字符串的尾部,
三个方法,都支持第二个参数,表示开始搜索的位置。使用第二个参数n
时,endsWith
的行为与其他两个方法有所不同。它针对前n
个字符,而其他两个方法针对从第n
个位置直到字符串结束。
实例方法 repeat
repeat方法返回一个新字符串,表示将原字符串重复n次,
NAN 等同于 0
'na'.repeat(NaN) // ""
参数取整运算
'na'.repeat(2.9) // "nana" 'na'.repeat(-0.9) // ""
参数是负数或者Infinity
// Infinity 表示无穷 'na'.repeat(Infinity) // RangeError 'na'.repeat(-1) // RangeError
如果参数是字符串,则会先转换成数字
'na'.repeat('na') // "" 'na'.repeat('3') // "nanana"
实例方法:padStart(), padEnd()
前者用于头部补全,pageEnd用以尾部补全
'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'
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"
ES2019 对字符串实例新增了trimStart()
和trimEnd()
这两个方法。它们的行为与trim()
一致,trimStart()
消除字符串头部的空格,trimEnd()
消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
字符串的实例方法replace()
只能替换第一个匹配。
) // 'aa_bcc'
引入了replaceAll()
方法,可以一次性替换所有匹配。 实例方法:replaceAll() 返回一个新的字符串,不会改变原字符串
'aabbcc'.replaceAll('b', '_') // 'aa__cc'