Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JS replace not working on string [duplicate]

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?

like image 406
Quadrant6 Avatar asked Sep 01 '12 21:09

Quadrant6


People also ask

Why string replace is not working in JavaScript?

The "replace is not a function" error occurs when we call the replace() method on a value that is not of type string . To solve the error, convert the value to a string using the toString() method before calling the replace() method.

Does replace replace all occurrences?

3.1 The difference between replaceAll() and replace()If search argument is a string, replaceAll() replaces all occurrences of search with replaceWith , while replace() only the first occurence. If search argument is a non-global regular expression, then replaceAll() throws a TypeError exception.

Does string replace replacing all occurrences?

The String type provides you with the replace() and replaceAll() methods that allow you to replace all occurrences of a substring in a string and return the new version of the string.

What does .replace do in JavaScript?

The replace() method returns a new string with one, some, or all matches of a pattern replaced by a replacement . The pattern can be a string or a RegExp , and the replacement can be a string or a function called for each match.


1 Answers

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

like image 160
jfriend00 Avatar answered Sep 16 '22 14:09

jfriend00