JS替换不适用于字符串

IT技术 javascript jquery
2021-02-07 03:26:04

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

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

question_num = 5;

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

散列仍然存在。

不确定我缺少什么?

2个回答

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

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

您可能还应该创建question_num一个字符串,尽管自动类型转换可能会为您处理。

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

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

@ShubhamKushwah - 我想你在这里很困惑。没有.splice()用于字符串的方法(它可用于数组)。
2021-03-27 03:26:04
你是对的@jfriend00 - 我的心态是,如果.slice()在那里,那么.splice()也会在那里很高兴知道。
2021-03-30 03:26:04
.splice()是个例外。它修改字符串,并返回子字符串。
2021-04-10 03:26:04

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

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

question_num = 5;

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