Reputation: 4911
I want to remove the trailing slash from a string in Java.
I want to check if the string ends with a url, and if it does, i want to remove it.
Here is what I have:
String s = "http://almaden.ibm.com/";
s= s.replaceAll("/","");
and this:
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");
But neither work.
Upvotes: 53
Views: 83523
Reputation: 1822
fun removeTrailSlash(s: String): String {
return s.replace(Regex("/$"), "")
}
fun String.removeTrailSlash(): String {
return CommonUtil.removeTrailSlash(this)
}
@Test
fun removeTrailSlash() {
// given
val expected = "asdf/qwer"
val s = "$expected/"
// when
val actual = CommonUtil.removeTrailSlash(s)
// then
assertEquals(expected, actual)
}
@Test
fun removeTrailSlash() {
// given
val expected = "asdf/qwer"
val s = "$expected/"
// when
val actual = s.removeTrailSlash()
// then
Assertions.assertEquals(expected, actual)
}
Upvotes: 0
Reputation: 14438
You can achieve this with Apache Commons StringUtils as follows:
String s = "http://almaden.ibm.com/";
StringUtils.removeEnd(s, "/")
Upvotes: 15
Reputation: 31
a more compact way:
String pathExample = "/test/dir1/dir2/";
String trimmedSlash = pathExample.replaceAll("^/|/$","");
regexp ^/ replaces the first, /$ replaces the last
Upvotes: 2
Reputation: 34370
Easiest way ...
String yourRequiredString = myString.subString(0,myString.lastIndexOf("/"));
Upvotes: 2
Reputation: 2393
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)
}
}
Upvotes: -1
Reputation: 2259
simple method in java
String removeLastSlash(String url) {
if(url.endsWith("/")) {
return url.substring(0, url.lastIndexOf("/"));
} else {
return url;
}
}
Upvotes: 8
Reputation: 8669
url.replaceAll("/$", "")
the $
matches the end of a string so it replaces the trailing slash if it exists.
Upvotes: 8
Reputation: 334
If you are a user of Apache Commons Lang you can take profit of the chomp method located in StringUtils
String s = "http://almaden.ibm.com/";
StringUtils.chomp(s,File.separatorChar+"")
Upvotes: 1
Reputation: 50107
There are two options: using pattern matching (slightly slower):
s = s.replaceAll("/$", "");
or:
s = s.replaceAll("/\\z", "");
And using an if statement (slightly faster):
if (s.endsWith("/")) {
s = s.substring(0, s.length() - 1);
}
or (a bit ugly):
s = s.substring(0, s.length() - (s.endsWith("/") ? 1 : 0));
Please note you need to use s = s...
, because Strings are immutable.
Upvotes: 104
Reputation: 691785
As its name indicates, the replaceAll method replaces all the occurrences of the searched string with the replacement string. This is obviously not what you want. You could have found it yourself by reading the javadoc.
The second one is closer from the truth. By reading the javadoc of the String class, you'll find a useful method called substring, which extracts a substring from a string, given two indices.
Upvotes: 2