【问题标题】:Replace integers in a string with Array values to correspond the order用数组值替换字符串中的整数以对应顺序
【发布时间】:2018-05-11 18:32:53
【问题描述】:

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

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);

【问题讨论】:

  • 你现在的代码到底有什么问题?错误信息?输出错误? console.log 调用打印什么,您希望它们打印什么?
  • @JJJ 输出如下 == AND == OR >= AND !=
  • 你能格式化你的代码吗?现在几乎不可能阅读!
  • @gurvinder372 编辑了代码
  • 预期输出是什么?这些数字是多少?!

标签: javascript jquery arrays string loops


【解决方案1】:

如果您想将myArray 数组中的所有numbers 替换为它们各自的strings,将string 替换为相同的index,您可以执行以下操作:

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

它会给你以下结果:

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 matches = testString.match(/\d+/g);
var result = testString;
matches.forEach(function(str, index) {
  result = result.replace(str, myArray[index]);
});
console.log(result);

【讨论】:

  • 非常感谢,这正是我想要的。反响很好
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2014-02-01
  • 2012-11-25
  • 1970-01-01
相关资源
最近更新 更多