45

我想从 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");

但两者都不起作用。

4

10 回答 10

96

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

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

于 2011-03-25T20:02:06.743 回答
15

这应该会更好:

url.replaceFirst("/*$", "")
于 2012-11-12T12:24:17.247 回答
9

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

String s = "http://almaden.ibm.com/";
StringUtils.removeEnd(s, "/")
于 2019-09-16T15:38:21.213 回答
8

java中的简单方法

String removeLastSlash(String url) {
    if(url.endsWith("/")) {
        return url.substring(0, url.lastIndexOf("/"));
    } else {
        return url;
    }
}
于 2013-10-09T15:06:35.707 回答
5

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

于 2011-03-25T19:27:44.773 回答
2

顾名思义,replaceAll 方法用替换字符串替换所有出现的搜索字符串。这显然不是你想要的。您可以通过阅读javadoc自己找到它。

第二个更接近真相。通过阅读 String 类的 javadoc,您会发现一个名为 substring 的有用方法,它在给定两个索引的情况下从字符串中提取子字符串。

于 2011-03-25T19:31:30.553 回答
2

最简单的方法...

String yourRequiredString = myString.subString(0,myString.lastIndexOf("/"));
于 2015-01-14T12:21:50.183 回答
2

更紧凑的方式:

字符串路径示例 = "/test/dir1/dir2/";

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

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

于 2015-11-18T06:47:11.913 回答
1

如果您是Apache Commons Lang的用户,您可以利用StringUtils中的chomp方法获利

字符串 s = "http://almaden.ibm.com/";

StringUtils.chomp(s,File.separatorChar+"")

于 2012-04-26T09:41:29.293 回答
-1
   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)
        }
    }  
于 2014-05-26T12:01:17.570 回答