JavaScript 字符串操作大揭秘:高效删除字符的终极指南

292 阅读3分钟

在刷算法题的时候,我们常常需要删除字符串中的某个字符,我们一般会从两个方面想,去解决这样的问题。

- 第一种,自己手搓一个function去实现一个删除字符串中某个字符的方法,参数传入字符串和要删除的字符下标,调用。

- 第二种,用js自备的方法。

显然,用第二种作为切入方式思考,下面我会介绍几种不同的方法:

  1. 使用 replace() 方法:将要删除的字符替换为空字符串。
let str = "Hello World!";
let newStr = str.replace('o', ''); // 删除字符串中的 'o'
console.log(newStr); // 输出 "Hell World!"
  1. 使用 split() 和 join() 方法:将字符串分割成字符数组,然后将要删除的字符过滤掉,最后将数组合并成字符串。
let str = "Hello World!";
let newStr = str.split('o').join(''); // 删除字符串中的 'o'
console.log(newStr); // 输出 "Hell Wrld!"
  1. 使用 substring() 方法:根据要删除字符的位置,将字符串切割成两部分,并将它们连接起来。
let str = "Hello World!";
let index = str.indexOf('o'); // 找到第一个 'o' 的位置
let newStr = str.substring(0, index) + str.substring(index + 1); // 删除第一个 'o'
console.log(newStr); // 输出 "Hell World!"
  1. 自定义函数删除指定位置的字符:第一种,结合使用 slice() 方法,可以删除字符串中的第 n 个字符。第二种,结合split('')以空字符分割为字符数组,在使用splice(n,1)删除字符,最后用join('')把字符数组合并为字符串。
//这是第一种
function removeCharacter(str, n) {
    return str.slice(0, n) + str.slice(n + 1);
}

let str = "Hello World!";
let n = 4; // 要删除的是第 4 个字符,即 'o'
let newStr = removeCharacter(str, n);
console.log(newStr); // 输出 "Hell World!"

//这是第二种
let n = 1
let str = 'Hello World!'
let strArr = str.split('')
strArr.splice(n, 1)
console.log(strArr.join('')); // 输出“Hllo World!”

- 最后附上这些函数的基本使用说明

  1. replace()

    • 用途:用于在字符串中替换指定的子字符串或模式。

    • 语法string.replace(searchValue, replaceValue)

    • 参数

      • searchValue:要替换的字符串或正则表达式模式。
      • replaceValue:替换 searchValue 的新字符串或回调函数。
    • 返回值:返回一个新字符串,其中 searchValue 被替换为 replaceValue

  2. split()

    • 用途:将字符串分割成子字符串数组。

    • 语法string.split(separator, limit)

    • 参数

      • separator:指定分割字符串的分隔符,可以是字符串或正则表达式。
      • limit:可选参数,指定返回的数组的最大长度。
    • 返回值:一个由分割后的子字符串组成的数组。

  3. join()

    • 用途:将数组中的所有元素连接成一个字符串。

    • 语法array.join(separator)

    • 参数

      • separator:可选参数,指定连接数组元素的分隔符,默认为逗号。
    • 返回值:连接后的字符串。

  4. substring()

    • 用途:从字符串中提取指定范围的字符。

    • 语法string.substring(startIndex, endIndex)

    • 参数:(范围:左闭右开[ ))

      • startIndex:必需,提取的起始位置,可以为负数。
      • endIndex:可选,提取的结束位置,不包括该位置的字符,默认为字符串末尾。
    • 返回值:一个新的字符串,包含从 startIndexendIndex 之间的字符。

  5. slice()

    • 用途:从字符串中提取指定范围的字符,与 substring() 类似。
    • 语法string.slice(startIndex, endIndex)
    • 参数:与 substring() 相同。
    • 返回值:与 substring() 相同。
  6. splice()

    • 用途:用于向数组中添加或删除元素,并返回被删除的元素。

    • 语法array.splice(startIndex, deleteCount, item1, item2, ...)

    • 参数

      • startIndex:必需,指定开始删除或插入的位置。
      • deleteCount:可选,指定要删除的元素个数。如果为 0,则不删除元素。
      • item1, item2, ...:可选,要插入到数组中的元素。
    • 返回值:一个包含被删除元素的数组,如果没有删除元素,则返回空数组。