【问题标题】:How to remove string from string by range using JS [duplicate]如何使用JS按范围从字符串中删除字符串[重复]
【发布时间】:2019-02-02 06:43:22
【问题描述】:

我不知道如何在 JS 中按范围从文本中删除文本的简单方法。

我在那里阅读了很多问题,但没有人帮助我。

我不想用户替换等。只需删除。

例子:

jakxxxjakxxx => 删除 4 - 6 返回jakjakxxx

jakxxxjakxxx => 删除 0 - 2 返回 xxxjakxxx

有什么功能是标准的js库吗?

【问题讨论】:

  • 删除替换。字符串是不可变的,因此要删除字符,您可以派生一个新字符串,其中将要从原始字符串中删除的字符替换为空字符串。您是要根据索引删除,还是“知道”要替换的内容(在这种情况下,.replace() 函数可以满足您的需求)。
  • 我不想用户更换,等等。只是删除。所以,如果我什么都没有更换你的车,我没有删除你的车吗?另外,您尝试过的代码在哪里?
  • 你在描述str.substring...
  • 那么,当我调用 replace "xxx" by "" - empty string
  • @hiacliok .replace() 会准确地替换您告诉它的位置,因此如果您认为它做错了,请显示您尝试过的代码并解释您认为错误的原因(并记住 JS 开始计数与许多其他语言一样,位置为 0。如果从 '3' 开始,那是第四个索引,每个 JS 程序员都希望如此。将 '4' 作为第四个索引将是非常糟糕的做法)。听起来您最有可能寻找的东西可以通过 replace() 并传递一个 replacement function 来完成,这是在 Javascript 中调用 .replace() 的鲜为人知的方式。

标签: javascript string


【解决方案1】:

你可以过滤字母。

function remove(string, from, to) {
    return [...string].filter((_, i) => i < from || i > to).join('');
}

console.log(remove('jakxxxjakxxx', 4, 6)); // jakjakxxx 
console.log(remove('jakxxxjakxxx', 0, 2)); // xxxjakxxx
                    012345678901

或者对字符串进行切片。

function remove(string, from, to) {
    return string.slice(0, from) + string.slice(to);
}

console.log(remove('jakxxxjakxxx', 4, 6)); // jakjakxxx 
console.log(remove('jakxxxjakxxx', 0, 2)); // xxxjakxxx

【讨论】:

    【解决方案2】:

    我会提供与 Nina 不同的解决方案,这里有 2 个子字符串调用:

    function remove(string, from, to) {
      return string.substring(0, from) + string.substring(to);
    }
    

    无需转换成数组迭代字符。

    注意:记住我们从 0 开始计数。

    【讨论】:

      【解决方案3】:

      根据您在 cmets 中的跟进:使用 .substring().replace(),记住 Javascript(与几乎所有其他语言一样)使用从 0 开始的偏移量,而不是 1,并阅读 substring function documentation 以确保它的参数被提供为“开始位置,包括,结束位置,不包括”:

      var a = "jakxxxjakxxx";
      var b = "jakxxxjakxxx";
      
      var c = a.replace(a.substring(3,6)); // => "jakjakxxx"
      var d = b.replace(a.substring(0,3)); // => "xxxjakxxx"
      

      完成。如果您经常使用它,可以在自己的函数中进行参数重写,但要实现您想要实现的目标,您只需要两个内置函数,但您应该做的一件事是尝试通过您自己选择的数字来指示字符串或切片中的哪个索引来实现此目的:使用 JS 约定,不要在源代码中加入反模式。 p>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        相关资源
        最近更新 更多