Javascript Regex Custom Replace - PullRequest
       6

Javascript Regex Custom Replace

0 голосов
/ 29 октября 2018

Как получить следующее преобразование с помощью Regex?

Содержимое (структура входных данных):

a-test
b-123
c-qweq
d-gdfgd
e-312

Conversion:

1-test
2-123
3-qweq
4-gdfgd
Final-312

var index = 1;
function c_replace() {
  if(index == 5) { return "Final"; } 
  return index++;
}

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

вот так: D

// i assume you have a string input that contains linebreaks due to your question format
const input = `a-test
b-123
c-qweq
d-gdfgd
e-312`.trim(); // removing whitespace in front or behind the input data.

//splitting the lines on whitespace using \s+
const output = input.split(/\s+/).map((s, i, a) => {
  // this will map your pattern asd-foooasdasd
  const data = s.match(/^[a-z]+-(.+)$/);
  // you may want to tweak this. right now it will simply throw an error.
  if (!data) throw new Error(`${s} at position ${i} is a malformed input`);
  // figure out if we are in the final iteration
  const final = i == a.length -1;
  // the actual output data
  return `${final ? "Final" : (i + 1)}-${data[1]}`;
  // and of course join the array into a linebreak separated list similar to your input.
}).join("\n");

console.log(output);
0 голосов
/ 29 октября 2018

Тест

var index=1;
var text=`a-test
b-123
c-qweq
d-gdfgd
e-312`;
function c_replace() {
  if(index == 5) { return "Final-"; } 
  return index++ +'-';
}
console.log(text.replace(/.-/g,c_replace));
0 голосов
/ 29 октября 2018
var input = [
  'a-test',
  'b-123',
  'c-qweq',
  'd-gdfgd',
  'e-312'
];

var output = input.map((e, i) => ++i + e.slice(1));
output[output.length - 1] = 'Final' + output[output.length - 1].slice(1);
console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...