Ser*_*erg 9 java regex filenames filter
我需要实施
File[] files = getFiles( String folderName, String ptrn );
Run Code Online (Sandbox Code Playgroud)
其中ptrn是一个命令提示符样式模式,如"*2010*.txt"
我熟悉FilenameFilter类,但无法实现,
public boolean accept(File dir, String filename)
因为String.matches()不接受这样的模式.
谢谢!
Bal*_*usC 19
所述String#matches()
接受的正则表达式 模式.
"外行人"变体的正则表达式变体*2010*.txt
将是.*2010.*\.txt
.
所以以下应该有效:
public boolean accept(File dir, String name) {
return name.matches(".*2010.*\\.txt");
}
Run Code Online (Sandbox Code Playgroud)
双反斜杠只是代表一个实际的反斜杠,因为反斜杠本身是Java中的转义字符String
.
或者,您也可以使用其他String
方法在没有正则表达式的情况下执行此操作:
public boolean accept(File dir, String name) {
return name.contains("2010") && name.endsWith(".txt");
}
Run Code Online (Sandbox Code Playgroud)
你最好的选择可能是ptrn
代表一个真正的正则表达式模式,或用字符串替换每个.
with \.
和*
with,.*
以便它成为一个有效的正则表达式模式.
public boolean accept(File dir, String name) {
return name.matches(ptrn.replace(".", "\\.").replace("*", ".*"));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35973 次 |
最近记录: |