45

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

文字列が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");

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

4

10 に答える 10

96

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...文字列は不変であるため、を使用する必要があることに注意してください。

于 2011-03-25T20:02:06.743 に答える
15

これはうまくいくはずです:

url.replaceFirst("/*$", "")
于 2012-11-12T12:24:17.247 に答える
5

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

于 2011-03-25T19:27:44.773 に答える
2

よりコンパクトな方法:

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

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

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

于 2015-11-18T06:47:11.913 に答える
2

その名前が示すように、replaceAll メソッドは、検索された文字列のすべてのオカレンスを置換文字列に置き換えます。これは明らかにあなたが望むものではありません。javadocを読むことで、自分で見つけることができたはずです。

2 つ目は真実に近いです。String クラスの javadoc を読むと、substring と呼ばれる便利なメソッドが見つかります。このメソッドは、2 つのインデックスを指定して、文字列から部分文字列を抽出します。

于 2011-03-25T19:31:30.553 に答える
1

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

文字列 s = "http://almaden.ibm.com/";

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

于 2012-04-26T09:41:29.293 に答える