Замена строки с использованием сценария Java - PullRequest
1 голос
/ 22 сентября 2019

У меня большой массив строк в формате PRODUCTCODE1-QTY, PRODUCTCODE2-QTY, ..., PRODUCTCODEN-QTY

Мне нужно заменить все коды продуктов новым кодом продукта, сохранив существующий 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 ]

3 голосов
/ 22 сентября 2019

Вы можете использовать регулярное выражение:

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);
2 голосов
/ 22 сентября 2019

Я немного обновил ваше текущее решение:

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));
2 голосов
/ 22 сентября 2019

Вы можете сделать это с помощью регулярных выражений и 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...