空格不会被删除

whitespace will not get removed

假设有一个url="www.example.com/"。使用下面的代码,我想删除尾部的斜线,但它在字符串的末尾留下一个空白(顺便说一句,我不知道为什么)并使用其余代码,我试图删除白色 space 但它不会工作。

    String url="http://www.example.com/";
    int slash=url.lastIndexOf("/");


    StringBuilder myURL = new StringBuilder(url);

    if(url.endsWith("/")){
       myURL.setCharAt(slash, Character.MIN_VALUE );
       url=myURL.toString();
    }

    url=url.replaceAll("\s+","");
    System.out.println(url);

尝试trim它:url = url.trim();

因为\s+不匹配Character.MIN_VALUE。请改用 ' '

String url="www.example.com/";
int slash=url.lastIndexOf("/");


StringBuilder myURL = new StringBuilder(url);

if(url.endsWith("/")){
   myURL.setCharAt(slash, ' ');
   url=myURL.toString();
}

url=url.replaceAll("\s+","");
System.out.println(url);

但是你为什么不直接删除 / 呢?

String url="www.example.com/";
int slash=url.lastIndexOf("/");

StringBuilder myURL = new StringBuilder(url);
myURL.deleteCharAt(slash);
System.out.println(myURL);

我认为空 space 是由于 Character.MIN_VALUE 被解释为 space。

试试这个。它比您当前的替换代码更干净,不会留下任何 space.

if(url.endsWith("/")){
    url = url.trim().substring(0, url.length-1);
}
String url="www.example.com/";    
if(url.endsWith("/")){
            url = url.substring(0, url.length()-1);
        }

System.out.println(url);

您应该使用 deleteCharAt() 而不是 setCharAt()。 但完成这项工作最简单的方法是

String url="www.example.com/";
url = url.substring(0, url.lastIndexOf("/"));

if-block 中的代码替换为以下

url = url.substring(0, url.length()-1).trim();

那么我希望您也不再需要 StringBuilder 对象。

因此您的最终代码将如下所示

String url="www.example.com";
url = (url.endsWith("/")) ? url.substring(0, url.length()-1) : url;
System.out.print(url);

你为什么要把事情复杂化,如果这可以在单行中实现

String url="www.example.com/";
url=url.replace("/","");
System.out.println(url);

问题似乎与 setCharAt 方法的使用有关。

此方法将一个字符替换为另一个字符。因此,即使您将其替换为 Character.MIN_VALUE 乍一看似乎代表文字 Null 它实际上仍然是一个 unicode 字符('\0000' 又名空字符)。

最简单的解决方法是替换...

myURL.setCharAt(斜线,Character.MIN_VALUE);

与...

myURL.deleteCharAt(斜杠);

关于空字符的更多信息...

Understanding the difference between null and '\u000' in Java

what's the default value of char?

这是我的第一个回答,如果我没有遵守约定,请见谅。