5

この回答から、スラッシュとバックスラッシュの両方に一致する正規表現を取得しました: Regex to match both slash in JAVA

    String path = "C:\\system/properties\\\\all//";
    String replaced = path.replaceAll("[/\\\\]+", 
        System.getProperty("file.separator"));

ただし、次のエラーが表示されます。

スレッド「メイン」での例外 java.lang.StringIndexOutOfBoundsException: 文字列インデックスが範囲外です: 1

この正規表現の何が問題になっていますか? 削除+しても何も変わらず、エラーメッセージは同じです...

4

2 に答える 2

11

Javadocに記載されています。

置換文字列にバックスラッシュ (\) とドル記号 ($) を使用すると、リテラル置換文字列として扱われる場合とは結果が異なる場合があることに注意してください。を参照してくださいMatcher.replaceAllMatcher.quoteReplacement(java.lang.String)必要に応じて、これらの文字の特別な意味を抑制するために使用します。

だからあなたはこれを試すことができます:

String replaced = path.replaceAll("[/\\\\]+", Matcher.quoteReplacement(System.
            getProperty("file.separator")));
于 2013-07-23T15:18:00.443 に答える