我有各种各样的字符串,格式为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(",")
答案 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));