我有这个代码,它只接受那些.bmp
格式 的图像
String format="";
if(pic_sel_file.toLowerCase().endsWith(".bmp"))
format="BMP";
如何更改此代码以使其可以接受任何文件格式(.jpg、.tif 等)的图像?
我有这个代码,它只接受那些.bmp
格式 的图像
String format="";
if(pic_sel_file.toLowerCase().endsWith(".bmp"))
format="BMP";
如何更改此代码以使其可以接受任何文件格式(.jpg、.tif 等)的图像?
为避免出现多个if-then-else语句,您可以使用正则表达式对文件扩展名类型列表进行匹配。endsWith
不采用正则表达式,所以你可以这样做:
Matcher m = Pattern.compile("(?i).*\\.(bmp|gif|jpg|tif)$").matcher(pic_sel_file);
if (m.matches()) {
format = m.group(1).toUpperCase();
}
(?i)
忽略大小写
\\.
转义点字符
(bmp|...
图像类型
$
行结束
如果你想避免正则表达式,你可以使用一个集合并循环它:
List<String> allowedFileEndings = Arrays.asList("bmp", "png", "gif"); //or array
for (String allowedFileEndingsItem : allowedFileEndings) {
if(pic_sel_file.toLowerCase().endsWith(allowedFileEndingsItem)) // or "." + allowedFileEndingsItem
{
format = allowedFileEndingsItem; // uppercase if you want
break;
}
}
我什至会考虑对文件格式使用枚举,这可以使格式处理更轻松。