45 votes

Supprimer une barre oblique de fin d'une chaîne (modifiée du type d'URL) en JAVA

Je souhaite 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 l'un ni l'autre ne fonctionne.

96voto

Thomas Mueller Points 18666

Il y a deux options : utiliser la correspondance de modèle (légèrement plus lentement) :

 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.

15voto

Anton Points 141

Cela devrait mieux fonctionner :

 url.replaceFirst("/*$", "")

9voto

Babatunde Adeyemi Points 1124

Vous pouvez y parvenir avec Apache Commons StringUtils comme suit :

 String s = "http://almaden.ibm.com/";
StringUtils.removeEnd(s, "/")

8voto

SergeyB Points 596

méthode simple en java

 String removeLastSlash(String url) {
    if(url.endsWith("/")) {
        return url.substring(0, url.lastIndexOf("/"));
    } else {
        return url;
    }
}

5voto

CarlosZ Points 2455

url.replaceAll("/$", "") le $ correspond à la fin d'une chaîne de sorte qu'il remplace la barre oblique de fin s'il existe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X