ホームページ > Java > &#&チュートリアル > Java String Replace メソッドが文字列を更新しないのはなぜですか?

Java String Replace メソッドが文字列を更新しないのはなぜですか?

Linda Hamilton
リリース: 2024-11-14 11:48:02
オリジナル
525 人が閲覧しました

Why Isn't My Java String Replace Method Updating the String?

Java の String Replace メソッドが予期しない動作をする

Java では、String replace メソッドは、出現した部分文字列を文字列に置換するためによく使用される関数です。新しい文字列。ただし、ユーザーは、replace メソッドが誤動作していると思われる状況に遭遇することがあります。

次のコード スニペットを考えてみましょう:

String delimiter = "\*\*";
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>";
Map<String, String> mp = new HashMap<>();
mp.put("USERNAME", "User A");
mp.put("PASSWORD", "B");
for (Entry<String, String> entry : mp.entrySet()) {
  html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
}
ログイン後にコピー

このコードの目的は、USERNAME と USERNAME のプレースホルダーを置き換えることです。 HTML 文字列内の PASSWORD と、提供されたマップの対応する値。ただし、実行時には、元の HTML 文字列 html は変更されないため、違反が発生します。

問題を理解する

問題を理解するには、文字列が次のことを覚えておく必要があります。 Java では不変です。つまり、その場で変更することはできません。文字列の replace メソッドは、変更された値を含む新しい String オブジェクトを返します。私たちのコードでは、replace メソッドの結果を取得して元の html 変数に代入していません。その結果、変更は元の文字列に適用されません。

解決策

この問題を解決するには、replace メソッドの結果をキャプチャし、それを HTML 変数に割り当て直します:

html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
ログイン後にコピー

この変更により、コードは HTML 文字列を必要な置換値で正しく更新するようになります。

以上がJava String Replace メソッドが文字列を更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート