如何在每个N个字符后将一个字符串附加到另一个字符串?

时间:2019-05-17 23:18:31

标签: javascript regex string regex-group regex-greedy

我正在尝试创建一个程序,在写入字符串时,该程序在第二个字母后添加“ gav”。

var string1  = "word"

预期输出:

wogavrdgav

3 个答案:

答案 0 :(得分:0)

您可以为此使用模运算符-

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....

答案 1 :(得分:0)

RegEx

在这里,我们可以向.添加一个量词(匹配换行符的所有字符),并设计一个具有一个捕获组($1)的表达式:

(.{2})

Demo


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电路

您还可以在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);

答案 2 :(得分:0)

尝试一下:

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等字符之前匹配''并替换为{ {1}}

'gav'的示例:

匹配wordwo并忽略它,匹配之前的内容(word)并用方法''替换为'gav'