当前位置:网站首页>ES6 advanced string processing new features
ES6 advanced string processing new features
2022-08-11 02:25:00 【ZWZhangYu】
文章目录
字符串遍历
ES6 为字符串添加了遍历器接口,使得字符串可以被for…of循环遍历.除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点.
let str = "qwer安徽"
for (let value of str) {
console.log(value)
}

模板字符串
认识
在日常的开发过程中经常会遇到一些字符串组装的需求,比如一个较长的文本拼接展示,动态组件HTML拼接等等,一般来说我们会通过字符串拼接方式,然后各种修改双引号单引号,不仅书写不便,而且代码最终看起来很不好阅读,ES6中引入了模板字符串可以帮助我们以一种更友好的方式去解决这个问题.
<body>
<p id="p1"></p>
<hr>
<p id="p2"></p>
<script>
let user = {
name: "Alice",
address: "安徽合肥"
}
let title = "测试模板字符串";
// 字符串拼接方式
document.getElementById("p1").append("标题:" + title + " 姓名:" + user.name + " 地址:" + user.address)
// 参数变量方式
document.getElementById("p2").append(`标题:${
title} 姓名:${
user.name} 地址:${
user.address}`)
</script>

模板字符串(template string)是增强版的字符串,用反引号(`)标识.它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量.
如果在模板字符串中需要使用反引号,则前面要用反斜杠转义.
模板字符串中嵌入变量,需要将变量名写在${}之中.
如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中.
JavaScript 表达式
大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性.
let a = 1
let b = 2
document.getElementById("p3").append(`计算结果:${
a + b}`)

模板字符串之中还能调用函数.
document.getElementById("p4").append(`函数处理:${
hello(user.name)}`)
function hello(name) {
return "hello " + name
}

模板字符串之中可以执行JS脚本
document.getElementById("p4").append(`执行JS代码:${
document.getElementById("p1").innerText}`)
字符串新增的方法
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次.
padStart(),padEnd()填充函数
ES2017 引入了字符串补全长度的功能.如果某个字符串不够指定长度,会在头部或尾部补全.padStart()用于头部补全,padEnd()用于尾部补全.这个功能很实用,我在开发中遇到很多类似的需求,之前都是自己单独写函数去处理的,现在有了这个更加方便了.
// 字符串填充
console.log("abc".padStart(5, "0")) // 00abc
console.log("abc".padEnd(5, "0")) // abc00
padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串.
// 输出:123456789 如果原字符串超过了填充的长度返回源字符串
console.log("123456789".padStart(5, "0"))
// 输出:12345 如果填充的字符串超过了填充最大长度,则截去超出位数的补全字符串
console.log("123".padEnd(5, "45678"))
at()
at()方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置).
var str = "qwertyui";
console.log(str.at(0)) //q
console.log(str.at(-1)) // i
边栏推荐
猜你喜欢

Please talk about for...in and for...of in JS (below)

MySQL - 一条SQL在MySQL中是如何被执行的?

SyntaxError: invalid syntax

Logstash日志数据写入异常排查问题总结
OpenHarmony啃论文俱乐部-啃论文心得

js原型和原型链及原型继承

ARM development (4) How to read the chip manual for novice Xiaobai, bare metal driver development steps and pure assembly to achieve lighting, assembly combined with c lighting, c to achieve lighting

Future Trends in Vulnerability Management Programs
![[Detailed explanation of C data storage] (1) - in-depth analysis of the storage of shaping data in memory](/img/a1/b1c04d44ea74560a0be55a3b715d25.png)
[Detailed explanation of C data storage] (1) - in-depth analysis of the storage of shaping data in memory

117. 本地开发好的 SAP UI5 应用部署到 ABAP 服务器时,中文字符变成乱码的原因分析和解决方案
随机推荐
Vulnhub靶机:GEMINI INC_ 2
解决vim与外界的复制粘贴(不用安装插件)
软件测试面试题:测试用例与测试脚本?
How to solve the problem of Tomcat booting and crashing
[机缘参悟-66]:怎样才能让别人愿意帮你:利益共享法则、“大道”、“人性”
①CAS SSO单点登录框架源码深度分析
深度学习-第二次
八.数据的存储
Future Trends in Vulnerability Management Programs
Lianshengde W801 series 5-WeChat applet and W801 Bluetooth communication routine (read notes)
OpenHarmony啃论文俱乐部-啃论文心得
How to realize the repeatable design of FPGA
报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标
MySQL的主从复制+读写分离+分库分表,看这一篇文章就够了
【PHP】入门知识
Research on the Application of Privacy Computing Fusion
数论基础-整除(编程例题)
Mask RCNN 网络详解
项目构建工具-Gradle入门
惨遭面试官吊打高并发系统设计,回来学习 2400 小时后成功复仇