Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript Non-regex Replace

Tags:

javascript

Do any of the existing JavaScript frameworks have a non-regex replace() function, or has this already been posted on the web somewhere as a one-off function?

For example I want to replace "@!#$123=%" and I don't want to worry about which characters to escape. Most languages seem to have both methods of doing replacements. I would like to see this simple thing added.

like image 605
BuddyJoe Avatar asked Nov 13 '08 21:11

BuddyJoe


2 Answers

i may be misunderstanding your question, but javascript does have a replace()

var string = '@!#$123=%';
var newstring = string.replace('@!#$123=%', 'hi');

edit: (see comments) the 5th edition does seem to have this info in it, although it doesn't show up when i link directly to it. here's the relevant part:

The replace( ) method performs a search-and-replace operation. It takes a regular expression as its first argument and a replacement string as its second argument. It searches the string on which it is called for matches with the specified pattern. If the regular expression has the g flag set, the replace( ) method replaces all matches in the string with the replacement string; otherwise, it replaces only the first match it finds. If the first argument to replace( ) is a string rather than a regular expression, the method searches for that string literally rather than converting it to a regular expression with the RegExp( ) constructor, as search( ) does.

like image 125
Owen Avatar answered Sep 21 '22 16:09

Owen


I had exactly the same problem searching for a non-regex javascript string replace() method. My solution was to use a combination of split() and join():

"some text containing regex interpreted characters: $1.00".split("$").join("£");

which gives:

"some text containing regex interpreted characters: £1.00"

compare with replace():

"some text containing regex interpreted characters: $1.00".replace(new RegExp("$"),"£")

which bizarrely gives:

"some text containing regex interpreted characters: $1.00£"

like image 34
Nick Ager Avatar answered Sep 20 '22 16:09

Nick Ager