【问题标题】:JS replace not working on string [duplicate]JS替换不适用于字符串[重复]
【发布时间】:2012-09-01 21:41:29
【问题描述】:

试图用变量替换字符串中的所有 # 实例。它不起作用,但也没有重新调整任何错误。

answer_form = '<textarea name="answer_#" rows="5"></textarea>'+
              '<input type="file" name="img_#" />';

question_num = 5;

answer_form.replace(/#/g, question_num); 

哈希值仍然存在。

不确定我错过了什么?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    .replace() 返回一个新字符串(它不会修改现有字符串),因此您需要:

    answer_form = answer_form.replace(/#/g, question_num); 
    

    您可能还应该将question_num 设为字符串,但自动类型转换可能会为您处理。

    工作示例:http://jsfiddle.net/jfriend00/4cAz5/

    仅供参考,在 Javascript 中,字符串是不可变的——现有的字符串永远不会被修改。因此,任何对字符串进行修改的方法(如concatreplaceslicesubstrsubstringtoLowerCasetoUpperCase 等)总是返回一个新字符串.

    【讨论】:

    • .splice() 是一个例外。它修改字符串,并返回子字符串。
    • @ShubhamKushwah - 我想你在这里很困惑。字符串没有.splice() 方法(它可用于数组)。
    • 你说得对@jfriend00 - 我的心态是,如果.slice() 存在,那么.splice() 也会存在。很高兴知道。
    【解决方案2】:

    您的代码是正确的。只需像这样将值添加到变量中:

    answer_form = '<textarea name="answer_#" rows="5"></textarea>'+
                  '<input type="file" name="img_#" />';
    
    question_num = 5;
    
    answer_form = answer_form.replace(/#/g, question_num); 
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 2020-05-09
      • 1970-01-01
      • 2011-04-06
      • 2019-01-08
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多