56 votes

Javascript a-t-il une méthode pour remplacer une partie d'une chaîne sans créer de nouvelle chaîne ?

var str = "This is a string";
var thing = str.replace("string","thing");

console.log( str )
>> "This is a string" 

console.log( thing )
>> "This is a thing" 

Existe-t-il une autre méthode que je peux utiliser, en plus du remplacement, qui modifiera la chaîne en place sans me donner un nouvel objet chaîne ?

106voto

Cristian Sanchez Points 11266

Non, les chaînes en JavaScript sont immuables.

16voto

Jan-Peter Vos Points 2967

Pas que je sache, cependant si la raison pour laquelle vous voulez faire cela est simplement de garder votre code propre, vous pouvez simplement affecter la nouvelle chaîne à l'ancienne variable :

 var string = "This is a string";
string = string.replace("string", "thing");

Bien sûr, cela rendra le code un peu plus propre et créera toujours une nouvelle chaîne.

6voto

Poyoman Points 70

Il y a une raison pour laquelle les chaînes sont immuables. Comme Javascript utilise la technique d'appel par partage, la chaîne mutable serait un problème dans ce cas :

 function thinger(str) {
    return str.replace("string", "thing");
}

var str = "This is a str";
var thing = thinger(str);

Dans cette situation, vous souhaitez que votre chaîne soit transmise par valeur, mais ce n'est pas le cas. Si str était mutable, thinger changerait str, ce serait un effet vraiment étrange.

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