59

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?

0

2 Answers 2

194

.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.

Sign up to request clarification or add additional context in comments.

3 Comments

.splice() is an exception. It modifies the string, as well as returns the substring.
@ShubhamKushwah - I think you're confused here. There is no .splice() method for strings (it is available for arrays).
You're right @jfriend00 - I was in the mindset that if .slice() is there, then .splice() would be too. Glad to know.
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); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.