假设有一个url="www.example.com/"
。使用下面的代码我想删除尾部斜杠,但它在字符串的末尾留下一个空白(顺便说一下我不知道为什么)并使用其余的代码,我试图删除空格但它不管用。
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);
答案 0 :(得分:4)
尝试修剪它:url = url.trim();
答案 1 :(得分:2)
因为\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);
答案 2 :(得分:2)
String url="www.example.com/";
if(url.endsWith("/")){
url = url.substring(0, url.length()-1);
}
System.out.println(url);
答案 3 :(得分:1)
您应该使用deleteCharAt()代替setCharAt()。 但最简单的工作方式是
String url="www.example.com/";
url = url.substring(0, url.lastIndexOf("/"));
答案 4 :(得分:1)
问题似乎是使用setCharAt方法。
此方法将char替换为另一个char。所以即使你用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?
这是我的第一个回答,如果我没有遵守约定,那么道歉。
答案 5 :(得分:0)
我认为空格是由Character.MIN_VALUE
被解释为空格引起的。
试试这个。它比你当前的替换代码更干净,并且不会留下任何空间。
if(url.endsWith("/")){ url = url.trim().substring(0, url.length-1); }
答案 6 :(得分:0)
使用以下
替换 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);
答案 7 :(得分:0)
如果可以通过单行实现,为什么让事情变得复杂
String url="www.example.com/";
url=url.replace("/","");
System.out.println(url);