我有字符串,我想用我的数组值替换整数(数字)为对应顺序,字符串可以有不同的数学符号,具体取决于用户如何捕获数据。我可以有一个字符串和一个数组:
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);
答案 0 :(得分:0)
如果您要将所有numbers
替换为strings
数组中各自的myArray
,请将string
与index
相同,您可以执行以下操作:
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年或我的年龄> =我们将在明年见面!=年底
<强>演示:强>
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;