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?
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 \
.
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();
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.
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.
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;
}
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.
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)