2011-03-25 48 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(“^/|/$”,“”);

正则表达式^ /替换第一个,/ $替换最后