web-dev-qa-db-fra.com

node.js string.replace ne fonctionne pas?

var variableABC = "A B C"; 
variableABC.replace('B', 'D') //wanted output: 'A D C'

mais 'variableABC' n'a pas changé:

variableABC = 'A B C'

quand je veux que ce soit 'A D C'.

53
Aviram Net

Selon la norme Javascript, String.replace N'est pas censé modifier la chaîne elle-même. Il retourne simplement la chaîne modifiée. Vous pouvez vous référer à documentation de Mozilla Developer Network pour plus d'informations.

Vous pouvez toujours simplement définir la chaîne sur la valeur modifiée:

variableABC = variableABC.replace('B', 'D')

Edit: Le code donné ci-dessus ne remplace que la première occurrence.

Pour remplacer toutes les occurrences, vous pouvez faire:

 variableABC = variableABC.replace(/B/g, "D");  

Pour remplacer toutes les occurrences et ignorer la casse

 variableABC = variableABC.replace(/B/gi, "D");  
123
Munim

Les chaînes sont toujours modélisées comme immuable (au moins dans les langages de niveau supérieur python/Java/javascript/Scala/Objective-C).

Ainsi, toute opération de chaîne telle que la concaténation, les remplacements toujours renvoie une nouvelle chaîne contenant la valeur voulue, alors que la chaîne d'origine sera toujours la même.

9
Sriharsha

String.replace return n'est-il pas une valeur plutôt que de modifier la chaîne source?

Donc si vous voulez modifier variableABC, vous devez faire ceci:

var variableABC = "A B C";

variableABC = variableABC.replace('B', 'D') //output: 'A D C'
8
Jon

Si vous souhaitez simplement supprimer toutes les occurrences d'une sous-chaîne d'une chaîne sans utiliser regex, vous pouvez utiliser:

    var replacestring = "A B B C D"
    const oldstring = "B";
    const newstring = "E";
    while (replacestring.indexOf(oldstring) > -1) {
        replacestring = replacestring.replace(oldstring, newstring);
    }        
    //result: "A E E C D"
0
stackuser83