Java String Replace Conundrum
String 内の値を更新しようとして、提供されたコードは String の replace メソッドを使用します。
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; html.replace("**USERNAME**", "User A"); html.replace("**PASSWORD**", "B");
しかし、このアプローチでは期待した結果が得られません。なぜそうなるのでしょうか?
文字列の不変性の影響
この問題を理解する鍵は、文字列の不変性にあります。 Java の他のオブジェクトとは異なり、文字列をその場で変更することはできません。 replace など、String を変更するように見える操作は、実際には新しい String オブジェクトを作成します。
指定されたコードでは、replace 呼び出しにより新しい String オブジェクトが作成されますが、参照 HTML は元の String を指し続けます。 。これは、元の HTML コンテンツが置換試行の影響を受けないことを意味します。
解決策: 再割り当ての採用
この不変性のハードルを克服するには、参照 HTML を置換によって作成された新しい文字列。修正されたコードは次のとおりです。
html = html.replace("**USERNAME**", "User A"); html = html.replace("**PASSWORD**", "B");
各置換呼び出しの後に html を再割り当てすることで、目的の置換を含む更新された String を参照するようになります。このメソッドは、String の不変性を認識し、それを回避して、求められている置換を実現します。
以上がString の「replace」メソッドが HTML コンテンツを更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。