跳到主要内容

js 字符串操作方法

一般面试不会问 js 字符串,只是自己熟悉一下。

实例方法

1. 获取字符串信息

  • length:返回字符串的长度。
    const str = "Hello, World!";
    console.log(str.length); // 13

2. 查找和匹配

  • charAt(index):返回指定索引处的字符。

    const str = "Hello, World!";
    console.log(str.charAt(0)); // H
  • charCodeAt(index):返回指定索引处字符的 Unicode 编码。

    const str = "Hello, World!";
    console.log(str.charCodeAt(0)); // 72
  • indexOf(searchValue, fromIndex):返回指定值在字符串中第一次出现的索引,如果未找到则返回 -1。

    const str = "Hello, World!";
    console.log(str.indexOf("W")); // 7
  • lastIndexOf(searchValue, fromIndex):返回指定值在字符串中最后一次出现的索引,如果未找到则返回 -1。

    const str = "Hello, World! Hello again!";
    console.log(str.lastIndexOf("Hello")); // 14
  • includes(searchValue, position):检查字符串是否包含指定值,返回布尔值。

    const str = "Hello, World!";
    console.log(str.includes("World")); // true
  • startsWith(searchValue, position):检查字符串是否以指定值开头,返回布尔值。

    const str = "Hello, World!";
    console.log(str.startsWith("Hello")); // true
  • endsWith(searchValue, length):检查字符串是否以指定值结尾,返回布尔值。

    const str = "Hello, World!";
    console.log(str.endsWith("World!")); // true

3. 提取子字符串

  • slice(start, end):提取字符串的一部分,返回新字符串。

    const str = "Hello, World!";
    console.log(str.slice(0, 5)); // Hello
  • substring(start, end):提取字符串的一部分,返回新字符串。与 slice 类似,但不接受负数索引。

    const str = "Hello, World!";
    console.log(str.substring(0, 5)); // Hello
  • substr(start, length):从指定索引开始提取指定长度的子字符串。

    const str = "Hello, World!";
    console.log(str.substr(0, 5)); // Hello

4. 替换和转换

  • replace(searchValue, replaceValue):替换字符串中第一个匹配的子字符串。

    const str = "Hello, World!";
    console.log(str.replace("World", "JavaScript")); // Hello, JavaScript!
  • replaceAll(searchValue, replaceValue):替换字符串中所有匹配的子字符串。

    const str = "Hello, World! World is great!";
    console.log(str.replaceAll("World", "JavaScript")); // Hello, JavaScript! JavaScript is great!
  • toLowerCase():将字符串转换为小写。

    const str = "Hello, World!";
    console.log(str.toLowerCase()); // hello, world!
  • toUpperCase():将字符串转换为大写。

    const str = "Hello, World!";
    console.log(str.toUpperCase()); // HELLO, WORLD!
  • trim():去除字符串首尾的空白字符。

    const str = "   Hello, World!   ";
    console.log(str.trim()); // Hello, World!
  • trimStart():去除字符串开头的空白字符。

    const str = "   Hello, World!";
    console.log(str.trimStart()); // Hello, World!
  • trimEnd():去除字符串末尾的空白字符。

    const str = "Hello, World!   ";
    console.log(str.trimEnd()); // Hello, World!

5. 分割和拼接

  • split(separator, limit):将字符串分割为子字符串数组。

    const str = "Hello, World!";
    console.log(str.split(", ")); // ["Hello", "World!"]
  • concat(string1, string2, ..., stringN):将一个或多个字符串连接为一个新字符串。

    const str1 = "Hello";
    const str2 = ", ";
    const str3 = "World!";
    console.log(str1.concat(str2, str3)); // Hello, World!

6. 格式化和编码

  • padStart(targetLength, padString):在字符串开头填充指定字符,直到达到目标长度。

    const str = "5";
    console.log(str.padStart(3, "0")); // 005
  • padEnd(targetLength, padString):在字符串末尾填充指定字符,直到达到目标长度。

    const str = "5";
    console.log(str.padEnd(3, "0")); // 500
  • repeat(count):重复字符串指定次数。

    const str = "abc";
    console.log(str.repeat(3)); // abcabcabc
  • match(regexp):在字符串中搜索与正则表达式匹配的子字符串,返回匹配结果的数组。

    const str = "Hello, World!";
    console.log(str.match(/World/)); // ["World", index: 7, input: "Hello, World!", groups: undefined]
  • matchAll(regexp):在字符串中搜索与正则表达式匹配的所有子字符串,返回一个迭代器。

    const str = "Hello, World! Hello again!";
    const matches = str.matchAll(/Hello/g);
    for (const match of matches) {
    console.log(match);
    }
    // ["Hello", index: 0, input: "Hello, World! Hello again!", groups: undefined]
    // ["Hello", index: 14, input: "Hello, World! Hello again!", groups: undefined]

7. 其他方法

  • charAt(index):返回指定索引处的字符。

    const str = "Hello, World!";
    console.log(str.charAt(0)); // H
  • codePointAt(pos):返回指定索引处字符的 Unicode 编码点。

    const str = "Hello, World!";
    console.log(str.codePointAt(0)); // 72
  • normalize(form):返回字符串的规范化形式。

    const str = "Héllò, Wôrld!";
    console.log(str.normalize()); // Héllò, Wôrld!
  • toLocaleLowerCase(locale):将字符串转换为小写,考虑本地化规则。

    const str = "HELLO, WORLD!";
    console.log(str.toLocaleLowerCase("tr")); // hello, world!
  • toLocaleUpperCase(locale):将字符串转换为大写,考虑本地化规则。

    const str = "hello, world!";
    console.log(str.toLocaleUpperCase("tr")); // HELLO, WORLD!

总结

JavaScript 字符串提供了丰富的内置方法,用于各种操作和处理。通过合理使用这些方法,可以极大地简化代码并提高开发效率。如果你有任何更具体的问题或需要进一步的解释,请告诉我!

静态方法

JavaScript 字符串对象提供了一些静态方法,这些方法可以直接在 String 构造函数上调用,而不需要创建字符串实例。以下是一些常用的字符串静态方法及其简要说明:

1. String.fromCharCode(...codes)

  • 用途:根据指定的 Unicode 编码点序列,返回一个字符串。
  • 参数:一个或多个表示 Unicode 编码点的整数。
  • 返回值:一个字符串,包含由指定编码点组成的字符。
  • 示例
    const str = String.fromCharCode(72, 101, 108, 108, 111);
    console.log(str); // "Hello"

2. String.fromCodePoint(...codePoints)

  • 用途:根据指定的 Unicode 编码点序列,返回一个字符串。与 String.fromCharCode 类似,但支持超过 16 位的编码点。
  • 参数:一个或多个表示 Unicode 编码点的整数。
  • 返回值:一个字符串,包含由指定编码点组成的字符。
  • 示例
    const str = String.fromCodePoint(0x1f600, 0x1f601);
    console.log(str); // "😀😁"

3. String.raw(callSite, ...substitutions)

  • 用途:返回一个未经转义的原始字符串。常用于模板字符串中,防止转义字符被解析。
  • 参数
    • callSite:调用站点信息,通常是一个 Object,包含模板字符串的信息。
    • ...substitutions:可选的替换值。
  • 返回值:一个原始字符串。
  • 示例
    const name = "Alice";
    const age = 30;
    const result = String.raw`Hello, \${name}. You are \${age} years old.`;
    console.log(result); // "Hello, ${name}. You are ${age} years old."