Bootstrap

js的stream

在 JavaScript 中,string 是用于表示文本的数据类型。字符串是由一系列字符组成的,可以通过单引号 (')、双引号 (") 或反引号 (`) 来定义。下面是有关 JavaScript 字符串的详细介绍。


1. 创建字符串

1.1. 使用单引号或双引号

你可以使用单引号或双引号来创建字符串,二者功能相同。

 

let str1 = 'Hello, world!'; let str2 = "JavaScript is awesome!";

1.2. 使用模板字符串(反引号)

模板字符串(Template literals)允许在字符串中嵌入表达式,支持多行文本和插值。

 

let name = "Alice"; let greeting = `Hello, ${name}! Welcome to JavaScript.`; console.log(greeting); // 输出 "Hello, Alice! Welcome to JavaScript."

1.3. 多行字符串

通过反引号,字符串可以跨越多行。

 

let multiLine = `This is line 1 This is line 2 This is line 3`; console.log(multiLine);


2. 字符串常用方法

2.1. 字符串长度 (length)

返回字符串中字符的个数。

 

let str = "Hello"; console.log(str.length); // 输出 5

2.2. 访问字符 (charAt())

返回指定位置的字符。

 

let str = "Hello"; console.log(str.charAt(1)); // 输出 "e" (索引从 0 开始)

2.3. 获取字符编码 (charCodeAt())

返回指定字符的 Unicode 编码。

 

let str = "Hello"; console.log(str.charCodeAt(0)); // 输出 72 (H 的 Unicode 编码)

2.4. 字符串切割 (slice())

从指定的开始位置截取字符串。

 

let str = "Hello, world!"; console.log(str.slice(0, 5)); // 输出 "Hello"

2.5. 字符串替换 (replace())

将字符串中的某个子字符串替换为另一个字符串。

 

let str = "Hello, world!"; let newStr = str.replace("world", "JavaScript"); console.log(newStr); // 输出 "Hello, JavaScript!"

2.6. 转换为大写 (toUpperCase()) 和小写 (toLowerCase())

将字符串中的字母全部转换为大写或小写。

 

let str = "Hello, world!"; console.log(str.toUpperCase()); // 输出 "HELLO, WORLD!" console.log(str.toLowerCase()); // 输出 "hello, world!"

2.7. 字符串连接 (concat())

连接多个字符串。

 

let str1 = "Hello"; let str2 = "world!"; let result = str1.concat(" ", str2); console.log(result); // 输出 "Hello world!"

2.8. 字符串分割 (split())

将字符串根据指定的分隔符拆分成一个数组。

 

let str = "apple,banana,cherry"; let arr = str.split(","); console.log(arr); // 输出 ["apple", "banana", "cherry"]

2.9. 去除空白 (trim())

去掉字符串两端的空白字符。

 

let str = " Hello, world! "; console.log(str.trim()); // 输出 "Hello, world!"


3. 字符串的其他方法

3.1. startsWith()endsWith()

检测字符串是否以某个子字符串开始或结束。

 

let str = "Hello, world!"; console.log(str.startsWith("Hello")); // 输出 true console.log(str.endsWith("world!")); // 输出 true

3.2. includes()

检查字符串是否包含某个子字符串。

 

let str = "Hello, world!"; console.log(str.includes("world")); // 输出 true

3.3. indexOf()lastIndexOf()

返回指定子字符串的第一次或最后一次出现的索引。

 

let str = "Hello, world!"; console.log(str.indexOf("world")); // 输出 7 console.log(str.lastIndexOf("o")); // 输出 4

3.4. repeat()

返回一个重复指定次数的字符串。

 

let str = "Hello "; console.log(str.repeat(3)); // 输出 "Hello Hello Hello "


4. 字符串与数组

在 JavaScript 中,字符串本质上是字符数组,因此可以通过数组的方法对字符串进行处理。

4.1. 转换为数组

将字符串转换为数组,每个字符作为数组的元素。

 

let str = "Hello"; let arr = [...str]; // 使用扩展运算符 console.log(arr); // 输出 ["H", "e", "l", "l", "o"]

4.2. 转换为字符数组 (split())

通过 split() 方法将字符串分割成数组。

 

let str = "Hello"; let arr = str.split(""); console.log(arr); // 输出 ["H", "e", "l", "l", "o"]

4.3. 将数组转换为字符串 (join())

通过 join() 方法将字符数组合并为一个字符串。

 

let arr = ["H", "e", "l", "l", "o"]; let str = arr.join(""); console.log(str); // 输出 "Hello"


5. 字符串的编码与解码

5.1. encodeURIComponent()decodeURIComponent()

  • 用于编码和解码 URL 组件。
 

let str = "Hello World!"; let encodedStr = encodeURIComponent(str); console.log(encodedStr); // 输出 "Hello%20World%21" let decodedStr = decodeURIComponent(encodedStr); console.log(decodedStr); // 输出 "Hello World!"

5.2. btoa()atob()

  • 将字符串编码为 Base64 格式,或从 Base64 格式解码回原始字符串。
 

let str = "Hello"; let encoded = btoa(str); console.log(encoded); // 输出 "SGVsbG8=" let decoded = atob(encoded); console.log(decoded); // 输出 "Hello"


6. 字符串的编码格式

JavaScript 字符串默认采用 UTF-16 编码,这意味着每个字符占用 2 个字节(对于大多数常见字符),但某些 Unicode 字符(如表情符号)可能会占用 4 个字节。


7. 小结

JavaScript 字符串是强大的文本处理工具,提供了丰富的方法来操作、修改和查询字符串。掌握这些方法可以让你更高效地处理文本数据。

方法描述示例
charAt()获取指定位置的字符str.charAt(0)
toUpperCase()转换为大写str.toUpperCase()
toLowerCase()转换为小写str.toLowerCase()
replace()替换子字符串str.replace("old", "new")
split()将字符串分割成数组str.split(",")
trim()去掉前后空格str.trim()
startsWith()检查是否以某个子串开头str.startsWith("H")
endsWith()检查是否以某个子串结尾str.endsWith("!")

这些方法使得字符串在 JavaScript 中的处理变得简单高效。

JavaScript 的 substring() 方法用于提取字符串中两个索引之间的部分。它不会修改原始字符串,而是返回一个新的字符串。


substring() 方法

语法

 

str.substring(indexStart, indexEnd)

  • indexStart:要提取的子字符串的起始位置(包括此位置)。
  • indexEnd:可选,子字符串的结束位置(不包括此位置)。如果省略此参数,substring() 会提取到字符串的末尾。

返回值

返回一个新的字符串,包含从 indexStartindexEnd 之间的字符。如果省略 indexEnd,则从 indexStart 提取到字符串的末尾。


示例

1. 基本用法
 

let str = "Hello, world!"; let result = str.substring(0, 5); console.log(result); // 输出 "Hello"

2. 省略 indexEnd
 

let str = "Hello, world!"; let result = str.substring(7); console.log(result); // 输出 "world!"

3. 索引顺序

substring() 方法会自动交换 indexStartindexEnd 的位置,确保 indexStart 小于或等于 indexEnd

 

let str = "Hello, world!"; let result = str.substring(7, 0); // 即使 7 > 0,返回的结果也相同 console.log(result); // 输出 "Hello"

4. 当 indexEnd 超过字符串长度时

如果 indexEnd 超过了字符串的最大索引,它会被自动设置为字符串的长度。

 

let str = "Hello, world!"; let result = str.substring(7, 20); // 20 超过字符串长度,自动取到末尾 console.log(result); // 输出 "world!"

5. 负值参数

如果 indexStartindexEnd 是负数,substring() 会把它们当作 0 处理。因此,负值不会被用于索引。

 

let str = "Hello, world!"; let result = str.substring(-5, 5); // 负值被当作 0 处理 console.log(result); // 输出 "Hello"


slice() 方法的区别

substring()slice() 方法很相似,但有一些不同点:

  • 参数交换
    • substring() 会交换负值的参数,把负数当作 0 处理。
    • slice() 则会将负值视为从字符串尾部倒数的位置。
  • 返回值
    • substring() 返回从 indexStartindexEnd(不包括 indexEnd)的部分。
    • slice() 也返回从 indexStartindexEnd(不包括 indexEnd)的部分,但它支持负值索引。
示例对比:
 

let str = "Hello, world!"; console.log(str.substring(7, -1)); // 输出 "Hello" console.log(str.slice(7, -1)); // 输出 "world"


总结

substring() 是一个非常常用的方法,用于从字符串中提取子字符串。它不支持负索引,并且在交换参数时会保证返回有效的结果。它适用于需要提取从某个位置开始的字符串部分的情况。

;