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()
返回一个正则表达式在当前字符串的所有匹配
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结