【问题标题】:How to append a string to another string after every N char?如何在每个 N 字符后将一个字符串附加到另一个字符串?
【发布时间】:2019-05-17 23:18:31
【问题描述】:

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

var string1  = "word"

预期输出:

wogavrdgav

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    正则表达式

    在这里,我们可以为. 添加一个量词(匹配除新行之外的所有字符)并设计一个带有一个捕获组的表达式($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);

    正则表达式电路

    你也可以在jex.im中可视化你的表情:


    如果您希望将新行视为字符,则此表达式将执行此操作:

    ([\s\S]{2})
    

    RegEx Demo

    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);

    【讨论】:

      【解决方案3】:

      试试这个:

      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 开头的任意字符,如果没有 ^,则此正则表达式将从任意位置匹配
      • ?&lt;=(regex_group):匹配regex_group之后的东西
      • g: 全部匹配

      这种方式是从字符串的开头查找 2,4,6 等字符并且不匹配该组,因此它将在 2,4,6 等字符之前匹配 '' 并替换为 'gav'

      word 为例:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        • 2020-04-13
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多