2

文字列としてディレクトリリストを取得しましたが、文字列の特定の部分を取得したいのですが、これはディレクトリであるため、長さが変更される可能性があります。

文字列からファイル名を取得したい

"C:\projects\Compiler\Compiler\src\JUnit\ExampleTest.java"
"C:\projects\ExampleTest.java"

したがって、これら2つのケースでは、取得したいだけです(ファイル名も変更される可能性があるため、最初の前と最後の後にExampleTestテキストを取得するようなものが必要です)。正規表現などを使用してこれを行う方法はありますか?.\

4

5 に答える 5

6

独自の正規表現をコーディングするのではなく、Apache Commons FileNameUtilsを使用してみませんか?ドキュメントから:

このクラスは、ファイル名内に6つのコンポーネントを定義します(例:C:\ dev \ project \ file.txt)。

the prefix - C:\
the path - dev\project\
the full path - C:\dev\project\
the name - file.txt
the base name - file
the extension - txt

これを使用する方がはるかに優れています。これは、ファイル名やdirsなどを直接対象としており、一般的に使用され、明確に定義されたコンポーネントであるため、広範囲にわたってテストされ、エッジケースが解決されます。

于 2012-08-17T11:24:37.550 に答える
3
new File(thePath).getName()

また

int pos = thePath.lastIndexOf("\\");
return pos >= 0? thePath.substring(pos+1): thePath;
于 2012-08-17T11:28:37.217 に答える
1
File file = new File("C:\\projects\\ExampleTest.java");
System.out.println(file.getAbsoluteFile().getName());
于 2012-08-17T11:29:16.897 に答える
1

これはの正規表現でc#あり、java :Pでも機能します。ありがとう。Group Perl[1]で一致します。

^.*\\(.*?)\..*?$
于 2012-08-17T11:38:47.740 に答える
1

Javaコード

String test = "C:\\projects\\Compiler\\Compiler\\src\\JUnit\\ExampleTest.java";
String arr[] = test.split("\\Q"+"\\");
System.out.println(arr[arr.length-1].split("\\.")[0]);
于 2012-08-17T11:42:31.657 に答える