web-dev-qa-db-ja.com

node.js string.replaceが機能しませんか?

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

しかし、「variableABC」は変更されませんでした:

variableABC = 'A B C'

「A D C」にしたいとき。

53
Aviram Net

Javascript標準によれば、String.replaceは文字列自体を変更するものではありません。変更された文字列を返すだけです。詳細については、 Mozilla Developer Networkのドキュメント を参照してください。

文字列をいつでも変更された値に設定できます:

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

編集:上記のコードは、最初に出現したものだけを置き換えるものです。

すべての出現を置き換えるには、次のようにします。

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

すべての出現を置き換え、大文字小文字を無視するには

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

文字列は、常にimmutable(少なくとも高レベル言語python/Java/javascript/Scala/Objective-Cで)としてモデル化されます。

したがって、連結、置換などの文字列操作alwaysは、目的の値を含む新しい文字列を返しますが、元の文字列は同じままです。

9
Sriharsha

String.replace returningは、ソース文字列を変更するのではなく、値ではありませんか?

そのため、variableABCを変更する場合は、これを行う必要があります。

var variableABC = "A B C";

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

正規表現を使用せずに文字列から部分文字列のすべてのインスタンスを消去したい場合は、次を使用できます。

    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