# 四.字符串
# 1.模板字符串
# 1.1 用法
- 1.拼接字符串
将下面的字符串拼接到一起
let name = "abc"
let age = 6
let str = "hello~" + name + "今年" + age + "岁了" // 以前的用法
let str2 = `hello~${name}今年${age}岁了` // 现在的用法
1
2
3
4
2
3
4
- 2.拼写 dom
以前的写法
let ul = " <ul>" + "<li>" + name + "</li>" + "<li>" + age + "</li>" + "</ul>"
1
现在的写法(好处:可以换行 可以支持取值)
let ul = `<ul>
<li>${name}</li>
<li>${age}</li>
</ul>`
1
2
3
4
2
3
4
模板字符串用反引号包含,其中的变量用${}
括起来
var name = "abc",
age = "11"
let desc = `${name} is ${age} old`
console.log(desc)
// 所有模板字符串的空格和换行都被保留
var str = `<ul>
<li>1</li>
<li>2</li>
<ul>`
console.log(str)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
提示
其中变量会用变量的值替换掉
function replace(desc) {
return desc.replace(/\$\{([^}]+)\}/g, function (matched, key) {
return eval(key)
})
}
1
2
3
4
5
2
3
4
5
# 1.2 带标签用法
可以在模板字符串的前面添加一个标签,这个标签可以去处理模板字符串,标签其实就是一个函数,函数可以接受两个参数,一个是string
,就是模板字符串里面的每个字符串,还有一个参数可以使用rest
的形式value
,这个参数是模板字符串里面的值
var name = "abc",
age = 11
function desc(strings, ...values) {
console.log(strings, values)
}
desc`${name} is ${age} old!`
1
2
3
4
5
6
2
3
4
5
6
# 1.3 实现方式
let name2 = "xxx"
let age2 = 9
let str2 = "hello${name2}今年${age2}岁了"
str2 = str2.replace(/\$\{([^}]*)\}/g, function () {
return eval(arguments[1])
})
console.log(str2)
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3.字符串新方法
# 3.1 includes
- 返回布尔值,表示是否找到参数字符串
var s = "abc"
s.includes("b") // true
1
2
2
第二个参数表示开始搜索的位置
var s = "zbcd"
console.log(s.includes("b", 2)) // false
1
2
2
# 3.2 startsWith
- 返回布尔值,表示参数字符串是否在源字符串的头部
var s = "abc"
s.startsWith("a") // true
1
2
2
第二个参数表示开始搜索的位置
var s = "zbcd"
console.log(s.startsWith("b", 2)) // false
1
2
2
# 3.3 endsWith
- endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部
var s = "abc"
s.endsWith("c") // true
1
2
2
第二个参数表示开始搜索的位置
var s = "zbcd"
console.log(s.endsWith("b", 2)) // true
1
2
2
endsWith 的行为与其他两个方法有所不同。它针对前 n 个字符,而其他两个方法针对从第 n 个位置直到字符串结束
# 3.4 repeat
返回一个新字符串,表示将原字符串重复 n 次
"b".repeat(3)
1
# 3.4 padStart
进制转化
setInterval(function () {
let date = new Date()
let hour = date.getHours()
let minutes = date.getMinutes()
let seconds = date.getSeconds()
let str = `${hour.toString().padStart(2, 0)}`
str += `${minutes.toString().padStart(2, 0)}`
str += `${seconds.toString().padStart(2, 0)}` // padStart padEnd
console.log(str)
}, 1000)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10