使用Java脚本替换字符串

时间:2019-09-22 14:49:04

标签: javascript arrays string

我有各种各样的字符串,格式为PRODUCTCODE1-QTY,PRODUCTCODE2-QTY,...,PRODUCTCODEN-QTY

我需要用新的产品代码替换所有产品代码,并以高度优化的最快代码保留现有的数量。

预期结果是

"1234-2,1234-2"
""
""
""
"1234-2"
"1234-2,1234-2"
"1234-4"
"1234-4,1234-4"

给定的字符串是

"22543-2,25543-2"
""
""
""
"2543-2"
"2543-2,2543-2"
"2543-4"
"25543-4,25743-4"

我尝试过

var strings = str.split(",")
    for(i=0;i<strings.length;i++)
    {
    var q = ''; 

        var qty = string.split("-")[1]
        result.push("1234-"+qty)
    }
    r = result.join(",")

3 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:

var data = [
"22543-2,25543-2",
"",
"",
"",
"2543-2",
"2543-2,2543-2",
"2543-4",
"25543-4,25743-4"];

var replaced = data.map(function(e){
  return e.replace(/(^|,)\d+-/g, "$1"+"1234-")
});
console.log(replaced);
 

答案 1 :(得分:2)

您可以使用正则表达式和Array#map()

const input = [
  "22543-2,25543-2",
  "",
  "",
  "",
  "2543-2",
  "2543-2,2543-2",
  "2543-4",
  "25543-4,25743-4"
]
const replacement='1234'

const result=input.map(e => e.split(',').map(e => e.replace(/\d+/,replacement)).join(','))

console.log(result)

答案 2 :(得分:2)

我已经更新了您当前的解决方案:

function codeUpdater(oldString, codeBase){
  var strings = oldString.split(",");
  var updatedArray = [];
  for(var i=0;i<strings.length;i++){
      var string = strings[i];
      var qty = string.split("-")[1];
      string = codeBase + '-' + qty;
      updatedArray.push(string);
  }
  return updatedArray;
}

console.log(codeUpdater('2537-2, 2534-2, 2537-1, 2537-4', 1234));