483 votes

Comment remplacer tous les points dans une chaîne en utilisant JavaScript

Je veux remplacer toutes les occurrences d'un point ( . ) dans une chaîne JavaScript

Par exemple, j'ai:

 var mystring = 'okay.this.is.a.string';
 

Je veux obtenir: okay this is a string .

Jusqu'ici j'ai essayé:

 mystring.replace(/./g,' ')
 

mais cela finit avec toute la chaîne remplacée par des espaces.

aucune idée pour résoudre ça?

902voto

aefxx Points 10941

Presque ... vous devez échapper le . parce qu'il a la signification de "un caractère arbitraire" dans une expression régulière.

 mystring.replace(/\./g,' ')
 

319voto

Umesh Patil Points 5108

Une solution de plus qui est facile à comprendre :)

 var newstring = mystring.split('.').join(' ');
 

54voto

Fagner Brack Points 498
 /**
 * ReplaceAll by Fagner Brack (MIT Licensed)
 * Replaces all occurrences of a substring in a string
 */
String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
    var _token;
    var str = this + "";
    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;
};

alert('okay.this.is.a.string'.replaceAll('.', ' '));
 

Plus rapide que d'utiliser regex ...

MODIFIER: Peut-être qu'à l'époque j'ai fait ce code je n'ai pas utilisé jsperf. Mais à la fin, une telle discussion est totalement inutile, la différence de performance ne vaut pas la lisibilité du code dans le monde réel, donc ma réponse est toujours valable, même si la performance diffère de l'approche regex.

22voto

user838204 Points 559
str.replace(new RegExp(".","gm")," ")

16voto

Victor Points 695

Pour ce scénario simple, je recommande également d'utiliser les méthodes qui viennent en build dans javascript.

Vous pourriez essayer ceci:

 "okay.this.is.a.string".split(".").join("")
 

Salutations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X