使用Array值替换字符串中的整数以对应顺序

时间:2017-11-28 10:29:05

标签: javascript jquery arrays string loops

我有字符串,我想用我的数组值替换整数(数字)为对应顺序,字符串可以有不同的数学符号,具体取决于用户如何捕获数据。我可以有一个字符串和一个数组:

var myArray = [
    "John",
    "London", 
    "March", 
    "Year 2017", 
    "My Age", 
    "We will meet", 
    "Next year", 
    "Year end"];

var testString = "234 == 123 AND 346 == 378 OR 123 >= 236 AND 124 != 478";

我希望结果是这样的字符串:

"John == London AND March == Year 2017 OR My Age >= We will meet AND Next year != Year end"

请参阅下面的代码并帮助我出错。

var myArray = ["John", "London", "March", "Year 2017", "My Age", "We will meet", "Next year", "Year end"];
var testString = "234 == 123 AND 346 == 378 OR 123 >= 236 AND 124 != 478";

var partsA = testString.split(" AND ");
console.log("A:", partsA);
var partsB = [];
var newString = "";
$.each(partsA, function(k, v) {
    partsB = v.split(" == ");
    console.log("B-1:", partsB);
    if (!isNaN(partsB[0])) {
        partsB[0] = myArray[parseInt(partsB[0])];
    }
    if (!isNaN(partsB[1])) {
        partsB[1] = myArray[parseInt(partsB[1])];
    }
    console.log("B-2:", partsB);
    partsA[k] = partsB.join(" == ");
});
newString = partsA.join(" AND ");
console.log("S:", newString);
$("#newstring").text(newString);

1 个答案:

答案 0 :(得分:0)

如果您要将所有numbers替换为strings数组中各自的myArray,请将stringindex相同,您可以执行以下操作:

var matches = testString.match(/\d+/g);
var result = testString;
matches.forEach(function(str, index) {
  result = result.replace(str, myArray[index]);
});
  • 使用matches
  • 将所有数字输入.match(/\d+/)数组
  • 然后循环遍历此匹配数组并用其替换每个数字 匹配string变量中的myArray

它会给你以下结果:

  

约翰==伦敦和三月== 2017年或我的年龄> =我们将在明年见面!=年底

<强>演示:

&#13;
&#13;
var myArray = ["John", "London", "March", "Year 2017", "My Age", "We will meet", "Next year", "Year end"];
var testString = "234 == 123 AND 346 == 378 OR 123 >= 236 AND 124 != 478";

var matches = testString.match(/\d+/g);
var result = testString;
matches.forEach(function(str, index) {
  result = result.replace(str, myArray[index]);
});
console.log(result);
&#13;
&#13;
&#13;