JS替换不在字符串上工作

时间:2012-09-01 21:41:30

标签: javascript jquery

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

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

question_num = 5;

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

哈希仍然存在。

不确定我缺少什么?

2 个答案:

答案 0 :(得分:95)

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

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

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

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

仅供参考,在Javascript中,字符串是不可变的 - 永远不会修改现有字符串。所以任何修改字符串的方法(如concatreplaceslicesubstrsubstringtoLowerCase,{{ 1}}等等...)总是返回一个新字符串。

答案 1 :(得分:9)

您的代码是正确的。只需将值添加到变量中,如下所示:

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

question_num = 5;

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