Java 文字列置換の問題のトラブルシューティング
Java 文字列を扱うときは、文字列が不変であることを覚えておくことが重要です。これは、文字列に変更を加えると、既存の文字列オブジェクトを変更するのではなく、新しい文字列オブジェクトが作成されることを意味します。
次のコードを考えてみましょう。
String delimiter = "\*\*"; String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; Map<String, String> mp = new HashMap<String, String>(); mp.put("USERNAME", "User A"); mp.put("PASSWORD", "B"); for (Entry<String, String> entry : mp.entrySet()) { html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue()); }
このコードは、" を置き換えることが期待できます。 HTML 文字列内の USERNAME" および "PASSWORD" プレースホルダーとマップの値。ただし、 replace() メソッドは既存の文字列を変更しないため、これは起こりません。代わりに、置換が行われた新しい文字列が作成されます。
この問題を解決するには、新しい文字列を HTML 変数に割り当てる必要があります。
html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());
これを行うことで、置換を含む新しい文字列を作成し、それを HTML 参照に割り当てます。こうすることで、変更は元の HTML 文字列に反映されます。
以上がJava String Replace メソッドが機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。