Maison >Java >javaDidacticiel >Pourquoi la méthode « replace » de String ne met-elle pas à jour mon contenu HTML ?

Pourquoi la méthode « replace » de String ne met-elle pas à jour mon contenu HTML ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 18:12:01968parcourir

Why Doesn't String's `replace` Method Update My HTML Content?

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn