我在一个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())
,但我想知道是否有更好的、希望更程序化的方式来做到这一点。
准确地说,我想知道是否可以在 java.util.regex.Pattern
不处理它们的底层字符串表示的情况下添加或合并其中两个。