Как добавить строку в другую строку после каждого символа N? - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь создать программу, которая добавляет «gav» после каждой второй буквы, когда записывается строка.

var string1  = "word"

Ожидаемый результат:

wogavrdgav

Ответы [ 3 ]

1 голос
/ 18 мая 2019

Для этого вы можете использовать оператор модуля -

var string1  = "word";

function addGav(str){
  var newStr = '';
  var strArr = str.split('');

  strArr.forEach(function(letter, index){
    index % 2 == 1
      ? newStr += letter + 'gav'
      : newStr += letter
  })
  return newStr;
}

console.log(addGav(string1)); // gives wogavrdgav

console.log(addGav('gavgrif')) //gives gagavvggavrigavf....
0 голосов
/ 18 мая 2019

Попробуйте это:

const string1 = 'word'
console.log('Input:', string1)
const newStr = string1.replace(/(?<=(^(.{2})+))/g, 'gav')
console.log('Output:', newStr)
  • .{2}: 2 любой символ
  • (.{2})+: соответствует 2 4 6 8 любой символ
  • ^(.{2})+: соответствует 2 4 6 8 любому символу с начала, если у него нет ^, это регулярное выражение будет совпадать с любой позиции
  • ?<=(regex_group): сопоставить что-либо после regex_group
  • g: сопоставить все

Этот способ находит символы 2,4,6 и т. Д. В начале строки и не соответствует этой группе, поэтому она будет соответствовать '' перед 2,4,6 и т. Д. И замените на 'gav'

Пример на word:

match wo, word и проигнорируйте его, сопоставьте что-либо до этого ('') и заменить на 'gav' методом replace

0 голосов
/ 18 мая 2019

RegEx

Здесь мы можем добавить квантификатор к . (который соответствует всем символам, кроме новых строк) и создать выражение с одной группой захвата ($1):

(.{2})

Демо


Демонстрация JavaScript

const regex = /(.{2})/gm;
const str = `AAAAAA`;
const subst = `$1bbb`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

RegEx Circuit

Вы также можете визуализировать свои выражения в jex.im :

enter image description here


Если вы хотите рассматривать новые строки как символ, то это выражение будет делать это:

([\s\S]{2})

RegEx Demo

enter image description here

enter image description here

Демонстрация JavaScript

const regex = /([\s\S]{2})/gm;
const str = `ABCDEF
GHIJK
LMNOP
QRSTU
VWXYZ
`;
const subst = `$1bbb`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);
...