从JAVA中的字符串(从url类型更改)中删除尾部斜杠

时间:2011-03-25 19:24:28

标签: java url slash trailing

我想从Java中的字符串中删除尾部斜杠。

我想检查字符串是否以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");

但是都没有工作。

10 个答案:

答案 0 :(得分:76)

有两种选择:使用模式匹配(稍慢):

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...,因为字符串是不可变的。

答案 1 :(得分:10)

这应该更好:

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

答案 2 :(得分:6)

java中的简单方法

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

答案 3 :(得分:3)

url.replaceAll("/$", "") $匹配字符串的结尾,因此如果它存在则替换尾部斜杠。

答案 4 :(得分:2)

正如其名称所示,replaceAll方法用替换字符串替换搜索字符串的所有出现次数。这显然不是你想要的。您可以通过阅读the javadoc来自己找到它。

第二个更接近事实。通过读取String类的javadoc,您将找到一个名为substring的有用方法,它在给定两个索引的情况下从字符串中提取子字符串。

答案 5 :(得分:2)

如果您是 Apache Commons Lang 的用户,您可以从 StringUtils

中的 chomp 方法中获利
  

String s =“http://almaden.ibm.com/”;

     

StringUtils.chomp(S,即File.separatorChar + “”)

答案 6 :(得分:1)

更紧凑的方式:

  

String pathExample =“/ test / dir1 / dir2 /”;

     

String trimmedSlash = pathExample.replaceAll(“^ / | / $”,“”);

regexp ^ /替换第一个,/ $替换最后一个

答案 7 :(得分:1)

您可以使用Apache Commons StringUtils来实现此目标,如下所示:

String s = "http://almaden.ibm.com/";
StringUtils.removeEnd(s, "/")

答案 8 :(得分: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)
        }
    }  

答案 9 :(得分:-1)

最简单的方式......

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