J'essaie de remplacer un caractère d'espacement par un trait d'union que j'ai dans ma chaîne.
String replaceText = "AT AT";
replaceText.replace(' ', '-');
mais quand je fais cela, je ne peux pas sembler remplacer le personnage. J'ai essayé la méthode replaceAll()
et cela ne fonctionne pas non plus.
++++++ Réponse +++++++
désolé mon erreur .. le résultat de la programmation de fin de nuit :(
merci pour la réponse, je ne peux probablement pas répondre à tous, donc je vais vérifier la première réponse
replaceText = replaceText.replace(' ', '-');
replaceText = replaceText.replace(' ', '-');
Les chaînes sont immuables , elles ne peuvent pas être changées après la création. Toutes les méthodes qui modifient d’une manière ou d’une autre une chaîne renverront une nouvelle chaîne avec les modifications incorporées.
Vous devez enregistrer la valeur renvoyée par replace()
. Si vous souhaitez remplacer plusieurs occurrences, utilisez replaceAll()
.
String replaceText = "AT AT"; replaceText = replaceText.replaceAll(" ", "-");
Comme @ Mark Peters le souligne dans les commentaires, replace(Char, Char)
est suffisant (et plus rapide) pour remplacer toutes les occurrences.
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
Au cas où cela vous dérangerait: l'immuabilité est un Good Thing
.
La méthode replace renvoie une chaîne, vous devez donc réaffecter votre variable chaîne i.e.
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
Les replace
ET replaceAll
methods renvoient un String avec le résultat remplacé. Utilisez-vous la valeur renvoyée ou attendez-vous que la chaîne replaceText
soit modifiée? Si c'est le dernier cas, vous ne verrez pas le changement, parce que Les chaînes sont immuables.
String replaceText = "AT AT";
String replaced = replaceText.replace(' ', '-');
// replaced will be "AT-AT", but replaceText will NOT change
Les cordes sont immuables. Vous devez utiliser la valeur de retour de replace:
replaceText = replaceText.replace(' ', '-');
/*You can use below method pass your String parameter and get result as String spaces replaced with hyphen*/
private static String replaceSpaceWithHypn(String str) {
if (str != null && str.trim().length() > 0) {
str = str.toLowerCase();
String patternStr = "\\s+";
String replaceStr = "-";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
patternStr = "\\s";
replaceStr = "-";
pattern = Pattern.compile(patternStr);
matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
}
return str;
}
Si vous remplacez plusieurs chaînes, envisagez d'utiliser StringBuilder pour améliorer les performances.
String replaceText = "AT AT";
StringBuilder sb = new StringBuilder(replaceText);
sb.Replace(' ', '-');