2016-12-16 198 views
0

假設有一個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); 
+1

你爲什麼要那樣做?只需獲取子字符串。 'url = url.substring(0,斜槓)'。 – toniedzwiedz

+0

@toniedzwiedz我認爲你應該把它作爲答案 –

+0

爲什麼複雜化的事情,如果你可以在一行中實現這一點:-System.out.println(url.replace(「/」,「」)); – Valath

回答

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); 
4

嘗試修剪:url = url.trim();

+0

所以,到底用什麼方法去除空格如果修剪可以修復它? – user3049183

+0

你的代碼將解決這個錯誤,並且非常好。我可能還建議向OP解釋爲什麼他的代碼首先要留下一個空白空間? –

+0

@ user3049183 trim只會刪除字符串開頭或結尾的空格。在你的情況下,這就是你需要的一切。但有時可能需要刪除所有空格,即使是在字符串中間的空格也是如此。 –

0

我覺得空白空間是由Character.MIN_VALUE被解釋爲一個空格造成的。

試試這個。它比你當前的替換代碼更清潔一些,並且不會留下任何空間。

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

System.out.println(url); 
1

相反setCharAt的(),你應該使用deleteCharAt()。 但做的工作最簡單的方法是

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

替換你的代碼你如果塊內與下面一個

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); 
0

你爲什麼複雜的事情,如果這可以在單行實現

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

我最初有同樣的想法。不幸的是,這個解決方案在URL的一般情況下不起作用。 (任何帶有其他斜槓的URL。 –

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?

這是我的第一個答案所以道歉,如果我不能保持約定。