Javascript使用数组中的值替换字符串中的字符串

标签 javascript str-replace

我想替换段落中的字符串,其中字符串可能是字母数字和斜杠的组合。

我做了什么:

var arrayFind = new Array('s\\if','t\\/');
var arrayReplace = new Array('If','q');
var arrayFindLength = arrayFind.length;

function replaceRightChar(str, parFind, parReplace){
    for (var i = 0; i < arrayFindLength; i++) {
        regex = new RegExp(parFind[i], "g");
        str = str.replace(regex, parReplace[i]);
    }
    alert(str);
}

var mainData="s\\if t\\/ h\\ s\\";
replaceRightChar(mainData, arrayFind, arrayReplace);

错误:

Uncaught SyntaxError: Invalid regular expression: /s/: \ at end of pattern

最佳答案

我的测试没有出现任何错误。 不过,您确实遇到了双重转义问题。

Array('s\\if','t\\/');

应该是(如果我做对了你想要的)

Array('s\\\\if','t\\\\/');

工作示例:jsfiddle

编辑:我仍然认为问题是双重转义。我 updated my fiddle测试所有可能的组合。

基本上我将 arrayFind 加倍了

var arrayFind1 = new Array('s\\if','t\\/');
var arrayFind2 = new Array('s\\\\if','t\\\\/');

和主数据

var mainData1="s\if t\/ h\\ s\\";
var mainData2="s\\if t\\/ h\\ s\\";

并四倍调用

replaceRightChar(mainData1, arrayFind1, arrayReplace);
replaceRightChar(mainData1, arrayFind2, arrayReplace);
replaceRightChar(mainData2, arrayFind1, arrayReplace);
replaceRightChar(mainData2, arrayFind2, arrayReplace);

我猜你需要第一个或第四个电话

关于Javascript使用数组中的值替换字符串中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649169/

相关文章:

javascript - 了解 GSAP Accordion

javascript - 浏览器仍然是单线程吗?

javascript - 显示或隐藏元素会影响下方 div 的位置

java - 如何删除任何字符串末尾的逗号

Java 用两个(或更多)表达式替换字符串

php - 将 lang 函数放入 php 字符串中

java - 如何指定方括号内的文本

php - preg_replace 检测语言标签和删除其他语言数据所需的支持

javascript - 在页面加载时加载动态创建的列表

javascript - 在 JSON 对象的特定位置插入属性