我想从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");
但是都没有工作。
答案 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("/"));