web-dev-qa-db-fra.com

Supprimer une barre oblique de fin d'une chaîne (modifiée par le type d'URL) dans JAVA

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.

36

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.

80
Thomas Mueller

Cela devrait mieux fonctionner:

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

méthode simple en Java

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

url.replaceAll("/$", "") la $ correspond à la fin d'une chaîne afin de remplacer la barre oblique de fin si elle existe.

3
CarlosZ

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 + "")

2
Dante

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.

2
JB Nizet

d'une manière plus compacte:

String pathExample = "/ test/dir1/dir2 /";

String trimmedSlash = pathExample.replaceAll ("^/|/$", "");

regexp ^/remplace le premier,/$ remplace le dernier

1
Lorenzo Nazario
   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)
        }
    }  
0
Aditya_Android