2011-03-25 375 views
27

我想從Java中的字符串中刪除尾部斜槓。從JAVA中的字符串(從url類型更改)中刪除尾部斜槓

我想檢查字符串是否以url結尾,如果是,我想刪除它。

以下是我有:

String s = "http://almaden.ibm.com/"; 

s= s.replaceAll("/",""); 

這:

String s = "http://almaden.ibm.com/"; 
length = s.length(); 
--length; 
Char buff = s.charAt((length); 
if(buff == '/') 
{ 
    LOGGER.info("ends with trailing slash"); 
/*how to remove?*/ 
} 
else LOGGER.info("Doesnt end with trailing slash"); 

但無論工作。

回答

61

有兩種選擇:使用模式匹配(稍微慢一點):

s = s.replaceAll("/$", ""); 

或:

s = s.replaceAll("/\\z", ""); 

,並使用if語句(稍快):

if (s.endsWith("/")) { 
    s = s.substring(0, s.length() - 1); 
} 

或(有點難看):

s = s.substring(0, s.length() - (s.endsWith("/") ? 1 : 0)); 

請注意,您需要使用s = s...,因爲字符串是不可變的。

+0

感謝您的迴應,我可以知道我是否可以對變量類型的URL執行相同的操作,因爲我想將其聲明爲final。 replaceAll似乎不能在類型的URL上工作 再次感謝您的答覆,我是一個初學者在Java! – 2011-03-26 00:06:22

+1

'java.net.URL'可以使用'toString()'轉換爲'java.lang.String'。 – 2011-03-26 08:46:42

+0

越慢,越快越醜......謝謝你! – 2016-03-14 20:20:03

3

url.replaceAll("/$", "")$匹配一個字符串的結尾,所以它會替換後面的斜槓(如果存在)。

+0

感謝您的答覆,我可以知道如果我能在一個變量類型URL執行相同的操作,因爲我想將其聲明爲final 。 replaceAll似乎不能在類型的URL上工作 再次感謝您的答覆,我是一個初學者在Java! – 2011-03-26 00:06:05

2

顧名思義,replaceAll方法用替換字符串替換搜索字符串的所有出現。這顯然不是你想要的。你可以通過閱讀the javadoc找到它。

第二個更接近真相。通過閱讀String類的javadoc,你會發現一個有用的方法,稱爲substring,它從一個字符串中提取一個子字符串,給出兩個索引。

3

如果你是阿帕奇共享郎的用戶可以採取位於StringUtils的

一個String的格格方法的利潤=「http://almaden.ibm.com/ 「;

StringUtils.chomp(S,即File.separatorChar + 「」)

+0

雙參數法不贊成使用'removeEnd':https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#removeEnd-java.lang。 String-java.lang.String- – berezovskyi 2017-05-02 21:54:07

9

這應該更好地工作:

url.replaceFirst("/*$", "") 
6

在java中簡單的方法

String removeLastSlash(String url) { 
    if(url.endsWith("/")) { 
     return url.substring(0, url.lastIndexOf("/")); 
    } else { 
     return url; 
    } 
} 
+0

很好的答案,儘管你不需要else語句。 – 2017-11-30 01:24:47

0
if (null != str && str.length > 0) 
    { 
     int endIndex = str.lastIndexOf("/"); 
     if (endIndex != -1) 
     { 
      String newstr = str.subString(0, endIndex); // not forgot to put check if(endIndex != -1) 
     } 
    } 
-1

最簡單的方法...

String yourRequiredString = myString.subString(0,myString.lastIndexOf("/")); 
1

一個更緊湊的方式:

字符串pathExample = 「/測試/ DIR1/DIR2 /」;

String trimmedSlash = pathExample.replaceAll(「^/|/$」,「」);

正則表達式^ /替換第一個,/ $替換最後