JavaScript Non-regex Replace
Try this:
function replaceAllTemp(str,find, replace) {
var ignoreCase=true;
var _token;
var token=find;
var newToken=replace;
var i = -1;
if ( typeof token === "string" ) {
if ( ignoreCase ) {
_token = token.toLowerCase();
while( (
i = str.toLowerCase().indexOf(
token, i >= 0 ? i + newToken.length : 0
) ) !== -1
) {
str = str.substring( 0, i ) +
newToken +
str.substring( i + token.length );
}
} else {
return this.split( token ).join( newToken );
}
}
return str;
};
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£"
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.