gpt4 book ai didi

javascript - 将一个数组中的所有符号替换为另一个 JS 中的互补符号

转载 作者:行者123 更新时间:2023-12-03 05:24:24 27 4
gpt4 key购买 nike

这就是问题所在。

我尝试编写一个算法来处理第一个数组中给定的string.replace()符号(我将其称为startSyms) >) 与另一个数组 (endSyms) 中的互补符号。逻辑是显而易见的。如果我们使用 .indexOf() 函数,它将返回一个正数(我们要替换的符号的位置),或者,如果字符串中不再有这样的符号,则输出将为-1。

So you can see how I did it. First I've used for loop to go through each of the symbols of the first array beginSyms and inside this for loop I put the while loop so that .replace() method will replace beginSyms[i] with endSyms[i] while the .indexOf(
beginSyms[i] )
is more than -1. When it becomes -1 while loop suppose to stop and for loop suppose to switch to the next symbol of the array.

function replacer(string) {
var beginSyms = ["*","**","^","^^","_|"],
endSyms = ["<b>","</b>","<i>","</i>","<br>"],
string = string;

for ( i = 0; i < (beginSyms.length - 1); i++ ) {
while ( string.indexOf(beginSyms[i]) > (-1) ) {
string = string.replace(beginSyms[i], endSyms[i]); // function used to run all the specialised text apparatus
}
}

return string;
}

这个算法似乎永远循环,因此,当我尝试运行它时,我的浏览器崩溃了。请解释我错在哪里并为此提供合适的解决方案。我一直在 StackOverflow 中搜索以找到答案,人们在那里使用 RegExp 来执行此类操作,但我不知道它是什么以及它来自哪里,所以如果您的答案包含某些内容像这样,请解释一下它是如何工作的。

谢谢!

P。 S. 我知道替换此 ** 会出现错误,因为 .indexOf().replace() 无法区分*** 没有经过特殊检查,但在我看来,这不是目前的主要问题,我可以稍后修复它。

最佳答案

我看不到循环在上述情况下没有结束,当找不到要替换的符号时(while循环)就会结束。

但是我注意到,您可以执行以下两件事以使您的函数按预期工作。

  1. 不要声明与参数相同的变量 var
    string = string
    因为它不会执行任何您可以删除的新操作。
  2. 此外,重新排序您的 beginSyms 以将 ** 首先放置,然后将 * 放置替换工作正常,并且也可以使用 ^^ 执行相同的操作。

示例片段:

function replacer(string) {
var beginSyms = ["**", "*", "^^", "^", "_|"],
endSyms = ["</b>", "<b>", "</i>", "<i>", "<br>"];

for ( i = 0; i < beginSyms.length - 1; i++ ) {
while (string.indexOf(beginSyms[i]) > -1) {
string = string.replace(beginSyms[i], endSyms[i]); // function used to run all the specialised text apparatus
}
}

return string;
}

console.log(replacer('Test text with *trial** and ^error^^'));

关于javascript - 将一个数组中的所有符号替换为另一个 JS 中的互补符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com