53

Trying to replace all instances of # in a string with a variable. It's not working but not retuning any error either.

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

question_num = 5;

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

The hashes remain.

Not sure what I'm missing?

Quadrant6
  • 1,175
  • 2
  • 15
  • 25

2 Answers2

184

.replace() returns a new string (it does not modify the existing string) so you would need:

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

You probably should also make question_num a string though auto type conversions probably handle that for you.

Working example: http://jsfiddle.net/jfriend00/4cAz5/

FYI, in Javascript, strings are immutable - an existing string is never modified. So any method which makes a modification to the string (like concat, replace, slice, substr, substring, toLowerCase, toUpperCase, etc...) ALWAYS returns a new string.

jfriend00
  • 683,504
  • 96
  • 985
  • 979
10

Your code is correct. Just add the value to the variable like this:

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

question_num = 5;

answer_form = answer_form.replace(/#/g, question_num); 
ffffff01
  • 5,068
  • 11
  • 52
  • 61