Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串修剪没有效果_Java_String_Unicode_Trim_Spaces - Fatal编程技术网

Java字符串修剪没有效果

Java字符串修剪没有效果,java,string,unicode,trim,spaces,Java,String,Unicode,Trim,Spaces,Java字符串修剪并没有为我删除空白字符 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/").tim

Java字符串修剪并没有为我删除空白字符

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

为什么我不能删除该空格?

是否正在分配字符串

String rank = " blabla "; 
rank = rank.trim();
别忘了第二个作业,否则你修剪的字符串将毫无用处

您也可以在API中查找此类内容:()


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

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


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

rank = rank.trim();// This will remove and save rank without leading and trailing spaces
将给出您想要的结果


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

因为java中的字符串是不可变的,即它们不能更改。您需要将其重新分配给某个临时字符串。然后使用这个字符串,你可以把它转换成int

String temp=rank.trim()
int te= Integer.parseInt(temp)

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

那是一个不可破坏的空间。见:


应该有用。可以添加双精度
\
而不是
\

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

我也遇到了同样的问题,并且对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;
    }
公共静态字符串高级(字符串值){
对象。requirennoull(值);
int strLength=value.length();
int len=value.length();
int st=0;
char[]val=value.toCharArray();
如果(strLength==0){
返回“”;
}
while((st
您是否使用
rank=rank.trim()或只是
rank.trim()?第二种方法行不通。请提供你使用过的trim()代码。@terryl也许你应该告诉我们
(某种方法)
的作用。@Baz
(某种方法)
只是试图从这个网站上提取每所大学的排名:请展示一个简短但完整的程序来演示这个问题。您目前没有提供足够的信息。如果您对空格不确定,我建议您使用正则表达式提取数字。使用“(-124;\\+)?[0-9]+(\\.[0-9]+)?)+”正则表达式将从字符串中提取数字。我将听取您的建议。但是我仍然想知道这两个空格代表什么。@TerryLi除非你给我们更多的信息(比如一个小的工作程序),否则我们永远不会知道…@TerryLi,如果你提供足够的信息,我们可以帮助你。很高兴我能帮忙:)值得注意的是这个答案:
rank = rank.replaceAll("\u00A0", "");
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;
    }