21

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+")");
}

为什么我不能删除那个空间?

4

7 回答 7

61

该网站的源代码显示了特殊的 html 字符 \u00A0尝试在您的 java String:中搜索或替换以下内容:

那是一个牢不可破的空间。请参阅:我有一个带有“\u00a0”的字符串,我需要用“”替换它 str_replace 失败

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

应该管用。也许添加一个 double\\而不是\.

于 2012-07-28T12:22:28.927 回答
9

您应该将修剪的结果分配回String变量。否则它是行不通的,因为 Java 中的字符串是不可变的。

String orig = "    quick brown fox    ";
String trimmed = original.trim();
于 2012-07-28T11:29:24.370 回答
4

该字符是一个不间断的空格,因此不会被该trim()方法删除。遍历字符并打印每个字符的 int 值,以了解必须用空字符串替换哪个字符才能获得所需的内容。

于 2012-07-28T12:23:05.753 回答
3

你在分配字符串吗?

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

不要忘记第二个作业,否则修剪后的字符串将无处可去。

您也可以在 API 中查看此类内容:http: //docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim ()

正如你所看到的,这个方法返回一个字符串,就像大多数对字符串进行操作的方法一样。他们返回修改后的字符串并保留原​​始字符串。

于 2012-07-28T11:29:19.277 回答
3

我遇到了同样的问题,并且对 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;
    }
于 2015-07-25T08:34:06.387 回答
0

Trim 函数返回字符串的新副本,省略了前导和尾随空格。

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

会给出你想要的结果。

如果您传递空字符串进行替换,替换方法将不起作用。

于 2012-07-28T11:35:41.677 回答
0

由于 Java 中的 String 是不可变的,即它们无法更改。您需要将其重新分配给一些临时字符串。然后使用该字符串,您可以将其转换为 int。

String temp=rank.trim()
int te= Integer.parseInt(temp)
于 2012-07-28T11:36:19.560 回答