当前位置: 首页 > 知识库问答 >
问题:

用数组中的值替换所有出现的子字符串[重复]

澹台浩广
2023-03-14

我有两个数组。一个数组包含要搜索的字符,另一个数组包含要替换它们的字符。我想在一个字符串中找到第一个数组中每个项目的所有匹配项,并将它们替换为第二个数组中的相应项。

let converted = '';
    let bbCodes = [
      "[code]", "[/code]", "[h1]", "[/h1]"
    ];
    let replacers = [
      "<code>", "</code>", "<h1>", "</h1>"
    ];
    let needsConverted = this.state.txtAreaVal;
    bbCodes.map((code, index) => {
        converted = needsConverted.replace(code, replacers[index]);
        console.log(converted);
    });
    console.log(converted);
  }

共有2个答案

盖翰池
2023-03-14

我想,你正在努力实现这一点:

let converted = '';
let bbCodes = [
  "[code]", "[/code]", "[h1]", "[/h1]"
];
let replacers = [
  "<code>", "</code>", "<h1>", "</h1>"
];
let needsConverted = 'Lorem ipsum is [h1]dummy text[/h1] in the industry.';
bbCodes.map((code, index) => {
  needsConverted = needsConverted.replace(code, replacers[index]);
  console.log(needsConverted);  
});
谷梁驰
2023-03-14

问题是您没有跟踪字符串的已更新版本。

>

  • 在第一次迭代中,它将第一个单词 ( [代码] 替换为

    在第二次迭代中,您替换原始字符串的第二个单词,并将结果赋给< code>converted,从而丢失了前一次迭代的更改。

    你不需要另一个变量,你可以重复使用你的初始字符串,并在每次迭代中不断替换它。

    此外,您可以使用< code>forEach来代替< code>map,这样更合适,因为您不会改变数组中的值。

    let bbCodes = [
      "[code]", "[/code]", "[h1]", "[/h1]"
    ];
    let replacers = [
      "<code>", "</code>", "<h1>", "</h1>"
    ];
    let needsConverted = 'this is a [code] code [/code] test see [h1] here [/h1]';
    bbCodes.forEach((code, index) => {
        // you don't need your other function, you can just reassign your current string to it's new value.
        needsConverted = needsConverted.replace(code, replacers[index]);
    });
    console.log(needsConverted);

  •  类似资料:
    • 问题内容: 我有这个字符串: 正在做: 似乎只删除了上面字符串中的第一个匹配项。 如何替换 所有 出现的内容? 问题答案: 注意:请勿在对性能有要求的代码中使用此代码。 作为简单文字字符串的正则表达式的替代方法,您可以使用 一般模式是 在某些情况下,它过去比使用和正则表达式要快,但是在现代浏览器中,情况似乎不再如此。 结论:如果您有性能至关重要的用例(例如,处理数百个字符串),请使用Regexp方

    • 问题内容: 我想替换字符串中第n个出现的子字符串。 一定有什么我想做的事情是 最简单,最Python化的方法是什么? 为什么不重复: 我不想在这种方法中使用正则表达式,而我发现的类似问题的大多数答案只是正则表达式剥离或真正复杂的功能。我真的想要尽可能简单而不是正则表达式的解决方案。 问题答案: 我使用简单的函数,该函数列出所有出现的事件,选择第n个位置,并使用它将原始字符串分成两个子字符串。然后,

    • 这应该只得到数字和返回,但不做它作为预期的!有什么建议吗?

    • 问题内容: 对于穷人在客户端上实现近似排序规则正确排序的实现,我需要一个JavaScript函数,该函数可以 有效地 替换字符串中的单个字符。 这就是我的意思(请注意,这适用于德语文本,其他语言则有不同的排序方式): 基本上,我需要将给定字符串的所有出现的“ä”替换为“ a”(依此类推)。这样,本机排序的结果将非常接近用户的期望(或数据库将返回的结果)。 其他语言也具有执行此操作的功能:Pytho

    • 问题内容: 我知道替换字符串中 所有 出现的子字符串的两种方法。 正则表达式的方式(假设“要替换的子字符串”不包括正则表达式的特殊字符): String.replace()方式: 两者中哪一个效率更高(为什么)? 是否有比上述两种方法更有效的方法? 问题答案: 在下面使用正则表达式。 是否有比上述两种方法更有效的方法? 假设您在一个由数组支持的实现上进行操作,而不是在不可变的String类上进行操

    • 给定一个包含项a和B的字符串M,我想用每个a来代替B,用每个B来代替a来代替M'。天真地,人们会尝试用B代替A,然后用A代替B,但在这种情况下,M'只包含A。我可以想到替换这些项,并记录它们的位置,这样这些项就不会再被替换了。当我们只有A和B可以替换时,这是有效的。但是如果我们需要替换两个以上的项,而且它们的长度不同,那么这就变得很棘手了。 所以我想这样做: 我们将M作为输入字符串,并将R=[(x