从 JAVA 中的字符串(从 url 类型更改)中删除尾部斜杠
Posted
技术标签:
【中文标题】从 JAVA 中的字符串(从 url 类型更改)中删除尾部斜杠【英文标题】:Remove a trailing slash from a string(changed from url type) in JAVA 【发布时间】:2011-07-23 04:05:14 【问题描述】:我想从 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");
但两者都不起作用。
【问题讨论】:
【参考方案1】:url.replaceAll("/$", "")
$
匹配字符串的结尾,因此它会替换尾部斜杠(如果存在)。
【讨论】:
感谢您的回复,我能否知道我是否可以对变量类型的 URL 执行相同的操作,因为我想将其声明为 final。 replaceAll 似乎不适用于类型 URL 再次感谢您的回复,我是 java 初学者!【参考方案2】:正如其名称所示,replaceAll 方法将所有出现的搜索字符串替换为替换字符串。这显然不是你想要的。你可以通过阅读the javadoc自己找到它。
第二个更接近真相。通过阅读 String 类的 javadoc,您会发现一个名为 substring 的有用方法,它在给定两个索引的情况下从字符串中提取子字符串。
【讨论】:
【参考方案3】:有两种选择:使用模式匹配(稍慢):
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...
,因为字符串是不可变的。
【讨论】:
感谢您的回复,我能否知道我是否可以对变量类型的 URL 执行相同的操作,因为我想将其声明为 final。 replaceAll 似乎不适用于类型 URL 再次感谢您的回复,我是 java 初学者!java.net.URL
可以使用toString()
转换为java.lang.String
。【参考方案4】:
如果您是 Apache Commons Lang 的用户,您可以利用 StringUtils
中的 chomp 方法获利字符串 s = "http://almaden.ibm.com/";
StringUtils.chomp(s,File.separatorChar+"")
【讨论】:
不推荐使用双参数方法以支持removeEnd
:commons.apache.org/proper/commons-lang/apidocs/org/apache/…【参考方案5】:
这应该会更好:
url.replaceFirst("/*$", "")
【讨论】:
这会删除我正在寻找的多个尾随斜杠。【参考方案6】:java中的简单方法
String removeLastSlash(String url)
if(url.endsWith("/"))
return url.substring(0, url.lastIndexOf("/"));
else
return url;
【讨论】:
很好的答案,虽然你不需要 else 语句。【参考方案7】: 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)
【讨论】:
【参考方案8】:最简单的方法...
String yourRequiredString = myString.subString(0,myString.lastIndexOf("/"));
【讨论】:
这应该是 myString.substring,而不是 .subString。【参考方案9】:更紧凑的方式:
String pathExample = "/test/dir1/dir2/";
String trimmedSlash = pathExample.replaceAll("^/|/$","");
正则表达式 ^/ 替换第一个,/$ 替换最后一个
【讨论】:
【参考方案10】:您可以使用Apache Commons StringUtils 实现此目的,如下所示:
String s = "http://almaden.ibm.com/";
StringUtils.removeEnd(s, "/")
【讨论】:
更加简洁,并增加了 null 安全性的好处。赞成。以上是关于从 JAVA 中的字符串(从 url 类型更改)中删除尾部斜杠的主要内容,如果未能解决你的问题,请参考以下文章
从代码 C# 更改 Web.Config 中的 URL 重写规则