0

編集 1

私はちょっとした問題で立ち往生しており、私が普段頼りにしている男性は、信じられないかもしれませんが、新婚旅行でオーストラリアにいるのです。

boolean問題は、ファイル パスが正しいかどうかを知らせてくれるを取得しようと取り組んだことです。

問題は、常に false を返すことです。

次のサンプルデータを試しました

    c:\Lingerie\
    c:\\Lingerie\\
    c:\\
    c:\

編集

これまで開発してきた入力画面です。余分な空白を入れることはすでに考えていたので、すでにトリム コマンドを入力しています。

ここに画像の説明を入力 それらはすべてfalseを返しました。これが私が使用しているメソッドとそれを呼び出すコードです。

    dbFilePath = (text.getText()).trim();
    bool03 = busLog.isFilePath(dbFilePath);
    System.out.println("The result is " + bool03);

そして呼び出されるメソッドは

public boolean isFilePath(String filePath) {

    return discreetLog.isFilePathMatched(filePath);
}

そして、どちらが呼び出す

public boolean isFilePathMatched(String myFilePath){

    String regularExpression = "([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?";

    Pattern pattern = Pattern.compile(regularExpression);

    return Pattern.matches(regularExpression, myFilePath);
}

それが私のコードなのか入力エラーなのかわかりません。

4

1 に答える 1

3

サンプルの最初のパスは、実際には正規表現と正しく一致しています。

2 番目と 4 番目を一致させるには、二重のバックスラッシュを許可する必要があります。\\\\?正規表現の前のバックスラッシュの右側に追加するだけです。

3 番目と 4 番目を一致させるには、2 番目のグループをオプションにする必要があります。現在は operator とともに使用されています+*代わりに使用してください。

したがって、正規表現を次のものに置き換えると:

String regularExpression = "([a-zA-Z]:)?(\\\\\\\\?[a-zA-Z0-9_.-]+)*\\\\?\\\\?";

それはあなたのすべてのパスに一致し、それ以上のものはありません。

それでもサンプル データが一致しない場合は、コードのどこかに問題があります。SSCCEを投稿してみてください。

于 2013-11-13T21:02:51.833 に答える