ファイル名形式のデータをPattern
オブジェクトに保持しています。例:_\\d+x\\d+\\.png
。私の設定では、これはさまざまなサイズのアイコンを示します(たとえばicon_16x16.png
、icon_48x48.png
など)。
実際のファイル名を指定されたパターンと比較するメソッドがあります。ただし、ベース名も指定する必要があります(私の例では、これは「アイコン」になります)。
public boolean matches(String filename, String baseName) {
if (!IOCase.SYSTEM.checkStartsWith(filename, baseName)) {
return false;
}
return format.matcher(filename.replaceFirst(baseName, "")).matches();
}
ここで行っているのは、最初filename
にベース名で始まるかどうかを確認することです。Pattern
その場合、ベース名はファイル名文字列から削除され、オブジェクト( )と比較できるようになりますformat
。
私にはできることはわかっていますが、これを行うreturn filename.matches(Pattern.quote(baseName) + format.pattern())
ためのより良い、できればもっとプログラム的な方法があるかどうか疑問に思っています。
正確には、基礎となる文字列表現を処理せずに、それらの2つを追加またはマージできるかどうかを知りたいです。java.util.regex.Pattern