Die String#matches()
akzeptiert regular expressionpatterns. Die Regex-Variante der Variante "Laien" *2010*.txt
wäre .*2010.*\.txt
.
So sollten folgende Arbeiten:
public boolean accept(File dir, String name) {
return name.matches(".*2010.*\\.txt");
}
Der doppelte Schrägstrich nur gibt es einen tatsächlichen Backslash darstellen, da der Backslash selbst String
ein Escape-Zeichen in Java ist.
Alternativ können Sie auch tun, ohne regex die anderen String
Methoden verwenden:
public boolean accept(File dir, String name) {
return name.contains("2010") && name.endsWith(".txt");
}
Ihre beste Wette wahrscheinlich ist ptrn
ein echten Muster regex darstellen zu lassen oder auf schnur ersetzt jeden .
mit \.
und *
mit .*
, so dass es ein gültiges Regex-Muster wird.
public boolean accept(File dir, String name) {
return name.matches(ptrn.replace(".", "\\.").replace("*", ".*"));
}
Welche anderen Muster benötigen Sie zu unterstützen:
Zum Beispiel ersetzen „*“ Sie so etwas wie verwenden könnte? – OscarRyz