Java String trim has no effect
Solution 1
The source code of that website shows the special html character
. Try searching or replacing the following in your java String: \u00A0
.
That's a non-breakable space. See: I have a string with "\u00a0", and I need to replace it with "" str_replace fails
rank = rank.replaceAll("\u00A0", "");
should work. Maybe add a double \\
instead of the \
.
Solution 2
You should assign the result of trim back to the String
variable. Otherwise it is not going to work, because strings in Java are immutable.
String orig = " quick brown fox ";
String trimmed = original.trim();
Solution 3
The character is a non-breaking space, and is thus not removed by the trim()
method. Iterate through the characters and print the int value of each one, to know which character you must replace by an empty string to get what you want.
Solution 4
Are you assigning the String?
String rank = " blabla ";
rank = rank.trim();
Don't forget the second assignment, or your trimmed string will go nowhere.
You can look this sort of stuff up in the API as well: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()
As you can see this method returns a String, like most methods that operate on a String do. They return the modified String and leave the original String in tact.
Solution 5
I had same problem and did little manipulation on java's trim() method.
You can use this code to trim:
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;
}
Terry Li
Updated on November 28, 2020Comments
-
Terry Li over 3 years
Java String trim is not removing a whitespace character for me.
String rank = (some method); System.out.println("(" + rank + ")");
The output is
(1 )
. Notice the space to the right of the 1.I have to remove the trailing space from the string
rank
but neitherrank.trim()
norrank.replace(" ","")
removes it.The string
rank
just remains the same either way.Edit: Full Code::
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+")"); }
Why can't I remove that space?
-
Kishor Sharma almost 12 yearsIf you are not sure about spaces i will suggest you to use regex to extract the number. Use "((-|\\+)?[0-9]+(\\.[0-9]+)?)+" regex will extract number form string.
-
Terry Li almost 12 yearsI'll take you advice. But I still wonder what the two spaces denote.
-
Baz almost 12 years@TerryLi Unless you give us more information (like a small working program), we will never know...
-
Baz almost 12 years@TerryLi See, if you supply sufficient information, we are able to help you. Glad I could help :)
-
Quaternion about 9 yearsWorth noting this answer: stackoverflow.com/questions/1437933/…