Je veux supprimer la barre oblique finale d'une chaîne en Java.
Je veux vérifier si la chaîne se termine par une URL et si c'est le cas, je veux la supprimer.
Voici ce que j'ai:
String s = "http://almaden.ibm.com/";
s= s.replaceAll("/","");
et ça:
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");
Mais ni le travail.
Il existe deux options: utiliser la correspondance de motifs (légèrement plus lente):
s = s.replaceAll("/$", "");
ou:
s = s.replaceAll("/\\z", "");
Et en utilisant une instruction if (légèrement plus rapide):
if (s.endsWith("/")) {
s = s.substring(0, s.length() - 1);
}
ou (un peu moche):
s = s.substring(0, s.length() - (s.endsWith("/") ? 1 : 0));
Veuillez noter que vous devez utiliser s = s...
, car les chaînes sont immuables.
Cela devrait mieux fonctionner:
url.replaceFirst("/*$", "")
méthode simple en Java
String removeLastSlash(String url) {
if(url.endsWith("/")) {
return url.substring(0, url.lastIndexOf("/"));
} else {
return url;
}
}
url.replaceAll("/$", "")
la $
correspond à la fin d'une chaîne afin de remplacer la barre oblique de fin si elle existe.
Si vous êtes un utilisateur de Apache Commons Lang vous pouvez profiter de la méthode chomp située dans StringUtils
String s = "http://almaden.ibm.com/";
StringUtils.chomp (s, File.separatorChar + "")
Comme son nom l'indique, la méthode replaceAll remplace toutes les occurrences de la chaîne recherchée par la chaîne de remplacement. Ce n'est évidemment pas ce que vous voulez. Vous auriez pu le trouver vous-même en lisant le javadoc .
Le second est plus proche de la vérité. En lisant le javadoc de la classe String, vous trouverez une méthode utile appelée substring, qui extrait une sous-chaîne d'une chaîne, compte tenu de deux indices.
d'une manière plus compacte:
String pathExample = "/ test/dir1/dir2 /";
String trimmedSlash = pathExample.replaceAll ("^/|/$", "");
regexp ^/remplace le premier,/$ remplace le dernier
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)
}
}