内置对象的扩展-1

  1. 1. 模板字符串
  2. 2. 字符串的扩展
    1. 2.1. 判断一个字符串是否在另一个字符串中
    2. 2.2. 字符串重复
    3. 2.3. 补全字符串
    4. 2.4. 消除空格
    5. 2.5. 替换字符串
    6. 2.6. 查找指定位置的字符
  3. 3. 数值的扩展
    1. 3.1. 进制表示
    2. 3.2. 数值分隔符

摘要:模板字符串的用法、字符串的扩展方法和数值的扩展

模板字符串

模板字符串是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
// 普通字符串
let common = `普通字符串`

// 多行字符串
let multiline = `第一行字符串
第二行字符串`

// 在模板字符串中使用反引号 `,需要使用反斜线转义
let great = `aaaa,\`bbb\`,ccc`

// 在模板字符串中使用变量,需要写咋 ${} 之中
let name = "流霞"
let hello = `你好,我是${name}`

字符串的扩展

判断一个字符串是否在另一个字符串中

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
1
2
3
4
let s = "Hello world!"
s.startsWith("Hello") // true
s.endsWith("!") // true
s.includes("o") // true

这三个方法都接受第二个参数,表示开始搜索的位置。但endsWith针对前n个字符

1
2
3
4
let s = "Hello world!"
s.startsWith("world", 6) // true
s.endsWith("Hello", 5) // true
s.includes("Hello", 6) // false

字符串重复

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

  • 参数为负数或 Infinity,会报错。
  • 参数是 0 到-1 之间的小数,则等同于 0。
  • 参数NaN等同于 0。
1
2
3
"x".repeat(3) // "xxx"
"hello".repeat(2) // "hellohello"
"na".repeat(0) // ""

补全字符串

如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

  • 这两个方法接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
  • 补全时两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
  • 省略第二个参数,默认使用空格补全长度。
1
2
3
4
5
6
7
8
"x".padStart(5, "ab") // 'ababx'
"x".padStart(4, "ab") // 'abax'

"x".padEnd(5, "ab") // 'xabab'
"x".padEnd(4, "ab") // 'xaba'

"x".padStart(5) // ' x'
"x".padEnd(5) // 'x '

消除空格

trimStart()trimEnd()的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。trimLeft()trimRight()是其别名。

1
2
3
4
const s = "  abc  "
s.trim() // "abc"
s.trimStart() // "abc "
s.trimEnd() // " abc"

替换字符串

replace()只能替换第一个匹配。如果要替换所有的匹配,必须使用正则表达式的g修饰符。replaceAll()方法,可以一次性替换所有匹配。

1
2
3
"aabbcc".replace("b", "_") // 'aa_bcc'
"aabbcc".replace(/b/g, "_") // 'aa__cc'
"aabbcc".replaceAll("b", "_") // 'aa__cc'

查找指定位置的字符

at()方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置,从-1开始)。如果参数位置超出了字符串范围,返回undefined

1
2
3
4
const str = "hello"
str.at(1) // "e"
str.at(-1) // "o"
str.at(6) // undefined

数值的扩展

进制表示

1
2
3
4
5
6
7
8
let num1 = 100 // 十进制 100
let num2 = 0b100 // 二进制 4
let num3 = 0o100 // 二进制 64
let num4 = 0x100 // 二进制 256

// 转换为十进制使用 Number() 方法,参数可以使用字符串或数值类型的值
Number(0b100) // 4
Number("0o100") // 64

数值分隔符

在 JavaScript 中,允许使用下划线_作为数值的分隔符,分隔符没有指定的间隔位数,小数和科学计数法也适用。但有以下几个注意点

  • 不能放在数值的开头或结尾
  • 不能两个或以上的分隔符同时出现
  • 不能放在小数点前后
  • 不能放在科学计数法的指数e前后
1
2
3
4
1234500 === 123_4500 // true
123_45_00 === 1_234_500 // true
0.000_001 // 小数
1e10_000 // 科学计数法
true