【问题标题】:javascript .replace() method with mulltiple replacements具有多个替换的 javascript .replace() 方法
【发布时间】:2020-05-15 20:06:32
【问题描述】:

我想遍历逗号分隔字符串中的值列表,并修改并附加每个值的字符串。示例:

    // get input text, convert 
    mySQLtext =  "Select * from filename@@"

    // get substitution value (what to replace)
    mySubstitutonToken =  "@@"

    // get substitution values (comma separated)
    mySubstituton =  "1,2,3,4,5,6,7,8,9"

    // break string into array
    mySubstitutonArray = mySubstituton.split(",");  

    // iterate and replace
    $.each(mySubstitutonArray, function(index, val) {                           
         myVal = mySQLtext.replace(mySubstitutonToken, val);                                    

        // put on screen
        $("#output_text").append(myVal + '<br>');                   

    });

输出:

Select * from filename1
Select * from filename2
Select * from filename3
Select * from filename4
Select * from filename5
Select * from filename6
Select * from filename7
Select * from filename8
Select * from filename9

问题

如果输入文本多次出现替换值,我将如何处理?将正则表达式语法与变量名组合时遇到问题...

示例: mySQLtext = "从文件名@@ 中选择字段@@"

谢谢!

【问题讨论】:

    标签: javascript jquery regex replace


    【解决方案1】:

    通过替换所有匹配项而不是一个:

    myVal = mySQLtext.replace(new RegExp(mySubstitutionToken,"g"), val);
    

    【讨论】:

      【解决方案2】:

      这里需要在正则表达式中使用“g”(全局)标志。 你可以这样做:new RegExp(expression, 'g')/literalExpression/g

      const token = '@@';
      const substitutions = '1,2,3,4,5,6,7';
      const template = 'SELECT field@@ FROM file@@';
      
      const output = substitutions
        .split(',')
        .map(num => template.replace(
          new RegExp(token,'g'), 
          num
        ))
        
      console.log(output.join('\n'))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        相关资源
        最近更新 更多