web-dev-qa-db-ja.com

JAVAの文字列(URLタイプから変更)から末尾のスラッシュを削除します

Javaの文字列から末尾のスラッシュを削除したい。

文字列がURLで終わっているかどうかを確認します。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");

しかし、どちらも機能しません。

36

次の2つのオプションがあります。パターンマッチングの使用(少し遅い):

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...を使用する必要があることに注意してください。

80
Thomas Mueller

これはもっとうまくいくはずです:

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

javaの単純なメソッド

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

url.replaceAll("/$", "") the $は文字列の末尾に一致するため、末尾のスラッシュが存在する場合はそれを置き換えます。

3
CarlosZ

Apache Commons Langのユーザーであれば、StringUtilsにあるchompメソッドを利用できます。

ストリングs = "http://almaden.ibm.com/";

StringUtils.chomp(s、File.separatorChar + "")

2
Dante

名前が示すように、replaceAllメソッドは、検索された文字列のすべての出現箇所を置換文字列に置き換えます。これは明らかにあなたが望むものではありません。 javadoc を読んで、自分で見つけたかもしれません。

2つ目は真実から近いです。 Stringクラスのjavadocを読むと、substringと呼ばれる便利なメソッドが見つかります。このメソッドは、2つのインデックスが与えられると、ストリングからサブストリングを抽出します。

2
JB Nizet

よりコンパクトな方法:

文字列pathExample = "/ test/dir1/dir2 /";

文字列trimmedSlash = pathExample.replaceAll( "^/|/$"、 "");

regexp ^ /は最初を置き換え、/ $は最後を置き換えます

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