ES 字符串操作

字符串遍历

      字符串遍历接口:

           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'

substring( ) 方法

未完,待续......
原文地址:https://www.cnblogs.com/zhishiyv/p/12442749.html