web-dev-qa-db-fra.com

Remplacer l'espace par un trait d'union

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(' ', '-');
16
ben
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.

31
Erik

Les chaînes de caractères sont immuables.

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.

10
Matt Ball

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(' ', '-'); 
5
Hakan Ozbay

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
5
Rob Hruska

Les cordes sont immuables. Vous devez utiliser la valeur de retour de replace:

replaceText = replaceText.replace(' ', '-');
3
Brent Worden
/*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;
}
1
user4423251

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(' ', '-');
0
James