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.

Tags:

Javascript