JS替换不在字符串上工作

Qua*_*nt6 27 javascript jquery

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

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

question_num = 5;

answer_form.replace(/#/g, question_num); 
Run Code Online (Sandbox Code Playgroud)

哈希仍然存在.

不确定我错过了什么?

jfr*_*d00 106

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

answer_form = answer_form.replace(/#/g, question_num); 
Run Code Online (Sandbox Code Playgroud)

你可能也应该创建question_num一个字符串虽然自动类型转换可能会为你处理.

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

仅供参考,在Javascript中,字符串是不可变的 - 永远不会修改现有字符串.因此,这使得修改字符串的任何方法(如concat,replace,slice,substr,substring,toLowerCase,toUpperCase,等...)总是返回一个新的字符串.

  • @ShubhamKushwah - 我认为你在这里很困惑。字符串没有“.splice()”方法(它可用于数组)。 (2认同)

fff*_*f01 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); 
Run Code Online (Sandbox Code Playgroud)