Java String trim n'a pas d'effet

Java String trim ne supprime pas un caractère d'espace pour moi.

String rank = (some method);
System.out.println("(" + rank + ")");

la sortie est (1 ) . Remarquez l'espace à droite du 1.

je dois enlever l'espace de fuite de la chaîne rank mais ni rank.trim() ni rank.replace(" ","") ne l'enlève.

la chaîne rank reste la même de toute façon.

Edit: Code Complet: :

Document doc = Jsoup.connect("http://www.4icu.org/ca/").timeout(1000000).get();
Element table = doc.select("table").get(7);
Elements rows = table.select("tr");
for (Element row: rows) {
  String rank = row.select("span").first().text().trim();
  System.out.println("("+rank+")");
}

Pourquoi Je ne peux pas enlever cet espace?

17
demandé sur Terry Li 2012-07-28 15:26:32

7 réponses

le code source de ce site Web montre le caractère html spécial   . Essayez de chercher ou de remplacer ce qui suit dans votre chaîne de caractères java: \u00A0 .

C'est un espace insécable. Voir: j'ai une chaîne avec "\u00a0", et je dois la remplacer par ""str_replace fails

rank = rank.replaceAll("\u00A0", "");

devrait marcher. Peut-être ajouter un double \ au lieu du \ .

44
répondu Baz 2017-05-23 11:54:12

vous devez attribuer le résultat de trim à la variable String . Sinon ça ne va pas marcher, parce que les chaînes en Java sont immuable .

String orig = "    quick brown fox    ";
String trimmed = original.trim();
7
répondu dasblinkenlight 2012-07-28 11:29:24

assignez-vous la chaîne?

String rank = " blabla "; 
rank = rank.trim();

n'oubliez pas la deuxième mission, ou votre ficelle taillée n'ira nulle part.

vous pouvez regarder ce genre de choses dans L'API aussi bien: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim ()

comme vous pouvez le voir cette méthode renvoie une chaîne, comme la plupart des méthodes qui fonctionnent sur une chaîne le font. Ils renvoient la chaîne modifiée et laissez la chaîne originale en tact.

3
répondu Julius 2012-07-28 11:29:19

le caractère est un espace non-cassant, et n'est donc pas enlevé par la méthode trim() . Itérez les caractères et imprimez la valeur int de chacun, pour savoir quel caractère vous devez remplacer par une chaîne vide pour obtenir ce que vous voulez.

3
répondu JB Nizet 2012-07-28 12:23:05

j'ai eu le même problème et j'ai fait peu de manipulations sur la méthode trim() de java.

Vous pouvez utiliser ce code pour couper:

public static String trimAdvanced(String value) {

        Objects.requireNonNull(value);

        int strLength = value.length();
        int len = value.length();
        int st = 0;
        char[] val = value.toCharArray();

        if (strLength == 0) {
            return "";
        }

        while ((st < len) && (val[st] <= ' ') || (val[st] == '\u00A0')) {
            st++;
            if (st == strLength) {
                break;
            }
        }
        while ((st < len) && (val[len - 1] <= ' ') || (val[len - 1] == '\u00A0')) {
            len--;
            if (len == 0) {
                break;
            }
        }


        return (st > len) ? "" : ((st > 0) || (len < strLength)) ? value.substring(st, len) : value;
    }
1
répondu Ertuğrul Çetin 2015-07-25 08:34:06

Trim function retourne une nouvelle copie de la chaîne, avec les espaces de début et de fin omis.

rank = rank.trim();// This will remove and save rank without leading and trailing spaces

donnera le résultat que vous souhaitez.

remplacer la méthode ne fonctionnera pas si vous passez chaîne vide pour le remplacement.

0
répondu Kishor Sharma 2012-07-28 11:35:41

puisque les chaînes de caractères en java sont immuables, c'est-à-dire qu'elles ne peuvent pas être modifiées. Tu dois la réassigner à une ficelle temporaire. Et en utilisant cette chaîne, vous pouvez la convertir en int.

String temp=rank.trim()
int te= Integer.parseInt(temp)
0
répondu heretolearn 2012-07-28 11:36:19