JavaScript 字符串
JavaScript 字符串
Section titled “JavaScript 字符串”JavaScript 字符串用于存储和处理文本数据。
JavaScript 字符串
Section titled “JavaScript 字符串”JavaScript 字符串是由零个或多个字符组成的序列,例如 “Hello, World!” 或 ‘JavaScript is fun!’。
字符串可以使用单引号 ('...')、双引号 ("...") 或反引号(模板字面量:`...`)创建:
const carName1 = "Volvo XC60";const carName2 = 'Volvo XC60';const carName3 = `Volvo XC60`; // 模板字面量只要内部引号与外部引号不匹配,就可以在字符串中使用引号。如果匹配,则必须使用转义字符:
const answer1 = "It's alright"; // 双引号内的单引号const answer2 = 'He is called "Johnny"'; // 单引号内的双引号const answer3 = "He is called \"Johnny\""; // 转义双引号const answer4 = 'It\\'s alright'; // 转义单引号字符串的 length 属性返回字符串中的字符数量(即其长度):
const txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";const len = txt.length; // len 将为 26字符串中的转义字符
Section titled “字符串中的转义字符”要在字符串中包含特殊字符,需要使用反斜杠 (\) 转义字符。
当你想包含与字符串定界符相同的引号字符,或包含不能直接输入或具有特殊含义的字符时,这很有必要。
常见的转义序列:
| 序列 | 表示 |
|---|---|
| ’ | 单引号 (’) |
| “ | 双引号 (”) |
| \ | 反斜杠 () |
| \n | 换行 |
| \r | 回车 (常与 \n 一起用于 CRLF 换行符) |
| \t | 制表符 |
| \b | 退格符 (在现代 Web 环境中很少使用) |
| \f | 换页符 (在现代 Web 环境中很少使用) |
示例:
const message = "This string contains a \"quoted text\" and a new line character.\nSee? This is on a new line.";console.log(message);模板字面量 (Template Strings)
Section titled “模板字面量 (Template Strings)”ES6 引入了模板字面量,它提供了一种增强的字符串处理方式。它们使用反引号 (`) 括起来,而不是单引号或双引号。
模板字面量的主要特性:
- 字符串插值: 可以使用
${expression}轻松地将表达式(变量、函数调用等)直接嵌入到字符串中。 - 多行字符串: 字符串可以跨越多行,无需使用像
\n这样的特殊转义字符。
插值示例:
const name = "Alice";const age = 30;const greeting = `Hello, my name is ${name} and I am ${age} years old.`;// greeting 将是 "Hello, my name is Alice and I am 30 years old."多行字符串示例:
const poem = `The quick brown fox jumps overthe lazy dog.`;console.log(poem);在现代 JavaScript 中,这通常是创建多行字符串或包含嵌入变量的字符串的首选方式。
作为对象的字符串(避免使用)
Section titled “作为对象的字符串(避免使用)”通常,JavaScript 字符串是原始值,由字面量创建(例如,const firstName = "John";)。
然而,字符串也可以使用 new String() 构造函数定义为对象(例如,const firstName = new String("John");)。
const x = "John"; // typeof x 是 "string" (原始值)const y = new String("John"); // typeof y 是 "object" (对象)
console.log(x === y); // false (类型不同)console.log(x == y); // true (值相同,宽松相等)警告: 不要使用 new String() 将字符串创建为对象。这样做会显著降低执行速度,使比较复杂化,并导致意外行为。始终使用字符串字面量来创建字符串。 |
|---|
比较字符串对象很棘手:
const a = new String("John");const b = new String("John");console.log(a === b); // false (它们是内存中不同的对象)console.log(a == b); // false (对象按引用而不是值进行比较)字符串属性和方法
Section titled “字符串属性和方法”尽管字符串字面量是原始值,但当您尝试访问它们的属性(如 length)或调用方法时,JavaScript 会临时将它们包装成一个 String 对象。这使得您可以流畅地将类似对象的特性与原始字符串一起使用。
常用字符串属性:
Section titled “常用字符串属性:”| 属性 | 描述 |
|---|---|
| length | 返回字符串中的字符数量。 |
常用字符串方法:
Section titled “常用字符串方法:”字符串方法返回一个新的字符串或其他值;它们不会修改原始字符串(字符串是不可变的)。
| 方法 | 描述 |
|---|---|
| charAt(index) | 返回指定索引处的字符。 |
| charCodeAt(index) | 返回指定索引处字符的 Unicode 值。 |
| concat(str1, str2, …, strN) | 连接一个或多个字符串,并返回一个新的组合字符串。 |
| includes(searchValue, position?) | 检查字符串是否包含另一个字符串,返回 true 或 false。区分大小写。 |
| startsWith(searchValue, position?) | 检查字符串是否以指定字符串的字符开头,返回 true 或 false。 |
| endsWith(searchValue, length?) | 检查字符串是否以指定字符串的字符结尾,返回 true 或 false。 |
| indexOf(searchValue, fromIndex?) | 返回指定值在字符串中首次出现的索引。如果未找到,返回 -1。 |
| lastIndexOf(searchValue, fromIndex?) | 返回指定值在字符串中最后一次出现的索引。如果未找到,返回 -1。 |
| match(regexp) | 搜索与正则表达式匹配的字符串,并将匹配项作为 Array 对象返回。 |
| matchAll(regexp) | 返回与字符串匹配的正则表达式所有结果的迭代器,包括捕获组。 |
| replace(searchValue, newValue) | 搜索字符串中的值(或正则表达式),并返回替换了部分或全部匹配项的新字符串。newValue 可以是字符串或函数。 |
| replaceAll(searchValue, newValue) | 返回一个新字符串,其中所有 searchValue 的出现都被 newValue 替换。 |
| search(regexp) | 在字符串中搜索值(正则表达式),并返回匹配项的位置。如果没有匹配项,返回 -1。 |
| slice(startIndex, endIndex?) | 提取字符串的一部分并作为新字符串返回。不包括 endIndex。 |
| split(separator?, limit?) | 根据指定的 separators 将字符串分割成子字符串数组。 |
| substring(startIndex, endIndex?) | 提取字符串中两个指定索引之间的字符。如果 startIndex > endIndex,则它们会被交换。 |
| toLowerCase() | 将字符串转换为小写字母。 |
| toUpperCase() | 将字符串转换为大写字母。 |
| trim() | 移除字符串两端的空白字符。 |
| trimStart() (or trimLeft()) | 移除字符串开头的空白字符。 |
| trimEnd() (or trimRight()) | 移除字符串末尾的空白字符。 |
| padStart(targetLength, padString?) | 从字符串开头填充另一个字符串,使结果字符串达到指定长度。 |
| padEnd(targetLength, padString?) | 从字符串末尾填充另一个字符串,使结果字符串达到指定长度。 |
| toString() | 返回字符串本身(可用于将 String 对象转换回原始字符串)。 |
| valueOf() | 返回 String 对象的原始值。 |
注意:substr(startIndex, length) 被认为是遗留特性。请改用 substring() 或 slice()。