【问题标题】:javascript replace not replacing string zero {0}javascript 替换不替换字符串零 {0}
【发布时间】:2021-08-23 15:27:46
【问题描述】:

为什么下面的代码没有替换 {0}

var errorMessage = "Minimum {0} and maximum {1} characters allowed",spec =[1,60], dRegex;
   for(i = 0; i<2; i++){
      
      dRegex = new RegExp("\\{"+i+"\\}","g");
      errorMessage.replace(dRegex,spec[i]);
    }
"Minimum {0} and maximum 60 characters allowed"

【问题讨论】:

  • .replace() 方法返回带有替换的新字符串。它不会更改原始字符串。
  • 此类问题通常可以通过查阅 MDN 或其他可靠来源的文档来回答。 (其实这个网站上有很多关于.replace()的类似问题。)

标签: javascript str-replace


【解决方案1】:

你需要设置errorMessage。 replace 不会修改字符串。它返回修改后的字符串。

var errorMessage = "Minimum {0} and maximum {1} characters allowed",spec =[1,60], dRegex;
   for(i = 0; i<2; i++){
      
      dRegex = new RegExp("\\{"+i+"\\}","g");
      errorMessage = errorMessage.replace(dRegex,spec[i]);
    }
console.log(errorMessage)

【讨论】:

    【解决方案2】:

    答案已经给出(字符串是不可变的,因此您必须重新分配替换操作的值)。

    或者,您可能想探索template literals

    const specs = [1, 60];
    const errorMessage = `Minimum ${specs[0]} and maximum ${
      specs[1]} characters allowed`;
    console.log(errorMessage);
    
    // or replace immediately
    console.log(
      "Minimum {0} and maximum {1} characters"
        .replace(/\{(\d+)\}/g, (a, b) => specs[b])
    );

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      相关资源
      最近更新 更多