最初と最後(存在する場合)から「/」を削除して、入力文字列から文字列を抽出したいと思います。
例えば :
入力文字列:/abcd
出力文字列:abcd
入力文字列:/abcd/
出力文字列:abcd
入力文字列:abcd/
出力文字列:abcd
入力文字列:abcd
出力文字列:abcd
入力文字列://abcd/
出力文字列:/abcd
public static void main(String[] args) {
String abcd1 = "/abcd/";
String abcd2 = "/abcd";
String abcd3 = "abcd/";
String abcd4 = "abcd";
System.out.println(abcd1.replaceAll("(^/)?(/$)?", ""));
System.out.println(abcd2.replaceAll("(^/)?(/$)?", ""));
System.out.println(abcd3.replaceAll("(^/)?(/$)?", ""));
System.out.println(abcd4.replaceAll("(^/)?(/$)?", ""));
}
動作します。
最初に一致する(^/)?
ということは、文字列の先頭で(/$)?
0または1'/'に一致することを意味し、文字列の最後で0または1'/'に一致することを意味します。
"(^/*)?(/*$)?"
複数の「/」の一致をサポートする正規表現を作成します。
String abcd5 = "//abcd///";
System.out.println(abcd1.replaceAll("(^/*)?(/*$)?", ""));
正規表現のない方法:
String input = "/hello world/";
int length = input.length(),
from = input.charAt(0) == '/' ? 1 : 0,
to = input.charAt(length - 1) == '/' ? length - 1 : length;
String output = input.substring(from, to);
もう1つの推測:^\/|\/$
正規表現を置き換えるため。
あなたが試すことができます
String original="/abc/";
original.replaceAll("/","");
次に、空白を避けるためにトリムを呼び出します。
original.trim();
これはうまくいくようです:
/?([a-zA-Z]+)/?
説明 :
/?:0回または1回の繰り返し
([a-zA-Z] +):アルファベットの文字をキャプチャし、1回以上繰り返します
/?:0回または1回の繰り返し