Java String trim不会为我删除空白字符。
String rank = (some method);
System.out.println("(" + rank + ")");
输出为(1 )
。注意1右边的空格。
我必须从字符串rank
中删除尾随空格,但rank.trim()
和rank.replace(" ","")
都不会删除它。
字符串rank
无论如何都是一样的。
修改:完整代码::
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+")");
}
为什么我不能删除那个空间?
答案 0 :(得分:49)
该网站的源代码显示了特殊的html字符
。尝试在java字符串中搜索或替换以下内容:\u00A0
。
这是一个不易破碎的空间。请参阅:I have a string with "\u00a0", and I need to replace it with "" str_replace fails
rank = rank.replaceAll("\u00A0", "");
应该有效。也许添加一个双\\
而不是\
。
答案 1 :(得分:6)
您应该将修剪结果分配回String
变量。否则它将不起作用,因为Java中的字符串是不可变的。
String orig = " quick brown fox ";
String trimmed = original.trim();
答案 2 :(得分:3)
你在分配字符串吗?
String rank = " blabla ";
rank = rank.trim();
不要忘记第二项任务,否则你的修剪过的字符串将无处可去。
您也可以在API中查看此类内容:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()
正如您所看到的,此方法返回一个String,就像大多数操作String do的方法一样。它们返回修改后的String并保留原始String。
答案 3 :(得分:3)
该字符是一个不间断的空格,因此不会被trim()
方法删除。遍历字符并打印每个字符的int值,以便知道必须用空字符串替换哪个字符才能得到你想要的字符。
答案 4 :(得分:2)
我遇到了同样的问题,并且对java的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;
}
答案 5 :(得分:0)
Trim函数返回字符串的新副本,省略前导和尾随空格。
rank = rank.trim();// This will remove and save rank without leading and trailing spaces
会给出你想要的结果。
如果传递空字符串以进行替换,则替换方法将无效。
答案 6 :(得分:0)
因为java中的String是不可变的,即它们无法更改。您需要将其重新分配给一些临时字符串。然后使用该字符串,您可以将其转换为int。
String temp=rank.trim()
int te= Integer.parseInt(temp)