Maison >Java >javaDidacticiel >Pourquoi la méthode « replace » de String ne met-elle pas à jour mon contenu HTML ?
Énigme de remplacement de chaîne Java
Pour tenter de mettre à jour les valeurs dans une chaîne, le code fourni utilise la méthode de remplacement de chaîne :
String html = "<html><head></head><body>**USERNAME** AND **PASSWORD**</body></html>"; html.replace("**USERNAME**", "User A"); html.replace("**PASSWORD**", "B");
Cependant, cette approche ne parvient pas à donner les résultats escomptés. Pourquoi en est-il ainsi ?
Les morsures d'immuabilité des chaînes
La clé pour comprendre ce problème réside dans l'immuabilité de String. Contrairement à certains autres objets Java, les chaînes ne peuvent pas être modifiées sur place. Toute opération qui semble modifier une chaîne, telle que le remplacement, crée en fait un nouvel objet String.
Dans le code donné, les appels de remplacement créent de nouveaux objets String, mais le code HTML de référence continue de pointer vers la chaîne d'origine. . Cela signifie que le contenu HTML d'origine n'est pas affecté par les tentatives de remplacement.
La solution : adopter la réaffectation
Pour surmonter cet obstacle d'immuabilité, vous devez réaffecter le code HTML de référence au nouvelle chaîne créée par remplacement. Voici le code corrigé :
html = html.replace("**USERNAME**", "User A"); html = html.replace("**PASSWORD**", "B");
En réaffectant le code HTML après chaque appel de remplacement, vous vous assurez qu'il pointe vers la chaîne mise à jour contenant les remplacements souhaités. Cette méthode reconnaît et contourne l'immuabilité de String pour obtenir les remplacements recherchés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!