空格不会被删除
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?
这是我的第一个回答,如果我没有遵守约定,请见谅。
假设有一个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?
这是我的第一个回答,如果我没有遵守约定,请见谅。