随笔 - 24  文章 - 0  评论 - 0  阅读 - 8483

es6-字符串的新增方法

一、String.fromCodePoint()

  ES5提供String.fromCharCode()方法,用于从Unicode码点返回对应字符,但是无法识别大于0xFFFF字符

  String.fromCodePoint()可以识别大于0xFFFF的字符,当有该方法有多个参数时,他们会被合并成一个字符串返回

二、String.raw()

  该方法返回被转义的字符串(一个斜杠都会被转义  == 》 即一个斜杠前面再加一个斜杠),往往用于模板字符串的处理方法

String.raw`Hi\n${2+3}!`
// 实际返回 "Hi\\n5!",显示的是转义后的结果 "Hi\n5!"
String.raw`Hi\u000A!`;
// 实际返回 "Hi\\u000A!",显示的是转义后的结果 "Hi\u000A!"

  如果字符串的斜杠已经转义,String.raw()会再次进行转义

String.raw`Hi\\n`
// 返回 "Hi\\\\n"

  String.raw()方法可以作为处理模板字符串的基本方法,他会将所有变量替换

三、s.codePointAt()

四、normalize()

ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。

'\u01D1'.normalize() === '\u004F\u030C'.normalize()
// true

五、includes(),startsWith(),endsWith()

  传统JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中,es6又提供了三种新方法

  includes():返回布尔值,表示是否找到了参数字符串

  startsWith():返回布尔值,表示参数字符串是否在原字符串的头部

  endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部

let s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true

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

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

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

六、repeat()

  repeat()方法返回一个新字符串,表示将原字符串重复了n次

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""

  参数如果是小数,会被取整,如果是参数是负数或者infinity,会报错

复制代码
'na'.repeat(2.9) // "nana"

'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError

//会先取整
'na'.repeat(-0.9) // ""

// NaN等同于0
'na'.repeat(NaN) // ""

// 参数是字符串,则会先转为数字
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
复制代码

七、padStart(),padEnd()

  如果某个字符串不够指定长度,会从头部或尾部补全

  padStart()用于头部补全

  padEnd()用于尾部补全

padStart()padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串

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

  如果省略第二个参数,默认会使用空格补全长度

'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '

  padStart()的常见用途是为数值补全指定位数

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

八、trimStart(), trimEnd()

  新增的trimStart()和trimEnd()两个方法,他们的行为与trim()一致。trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。他们返回的都是新字符串,不会修改原始字符串

const s = '  abc  ';
s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

  这两个方法对空格键、tab键、换行符等不可见的空白符号也有效

  浏览器还部署了额外的两个方法,trimLeft() trimRight()是他们两个的别名

九、matchAll()

  返回一个正则表达式在当前字符串的所有匹配

 

posted on   zhanlanzzz  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示