Rumah  >  Artikel  >  Java  >  Mengapa String Java Saya Tidak Menggantikan Kaedah Mengemas kini String?

Mengapa String Java Saya Tidak Menggantikan Kaedah Mengemas kini String?

Linda Hamilton
Linda Hamiltonasal
2024-11-14 11:48:02506semak imbas

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

Kaedah Ganti Rentetan Java Berkelakuan Tidak Dijangka

Dalam Java, kaedah ganti String ialah fungsi yang biasa digunakan untuk menggantikan kejadian subrentetan dengan rentetan baru. Walau bagaimanapun, kadangkala pengguna menghadapi situasi di mana kaedah ganti nampaknya tidak berfungsi.

Pertimbangkan coretan kod berikut:

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());
}

Dalam kod ini, matlamatnya adalah untuk menggantikan ruang letak untuk USERNAME dan KATA LALUAN dalam rentetan HTML dengan nilai yang sepadan daripada peta yang disediakan. Walau bagaimanapun, selepas pelaksanaan, html rentetan HTML asal kekal tidak disentuh, membawa kepada ion困惑.

Memahami Isu

Untuk memahami isu tersebut, kita perlu ingat bahawa Strings di Jawa tidak boleh diubah, bermakna ia tidak boleh diubah suai di tempatnya. Kaedah ganti pada rentetan mengembalikan objek Rentetan baharu yang mengandungi nilai yang diubah suai. Dalam kod kami, kami tidak menangkap hasil kaedah ganti dan menyerahkannya kembali kepada pembolehubah html asal. Akibatnya, perubahan tidak digunakan pada rentetan asal.

Penyelesaian

Untuk menyelesaikan isu ini, kita perlu menangkap hasil kaedah ganti dan tetapkan ia kembali kepada pembolehubah html:

html = html.replace(delimiter + entry.getKey()+ delimiter, entry.getValue());

Dengan pengubahsuaian ini, kod kini akan mengemas kini rentetan html dengan betul dengan penggantian yang dikehendaki nilai.

Atas ialah kandungan terperinci Mengapa String Java Saya Tidak Menggantikan Kaedah Mengemas kini String?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn