1

.bmp形式 の画像のみを受け入れるこのコードがあります

String format="";
if(pic_sel_file.toLowerCase().endsWith(".bmp"))
    format="BMP";

このコードを変更して、任意のファイル形式 (.jpg、.tif など) の画像を受け入れるにはどうすればよいですか?

4

3 に答える 3

4

複数の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|...画像の種類

  • $行の終わり

于 2013-02-02T12:03:49.477 に答える
1

正規表現を避けたい場合は、コレクションを使用してそれをループできます。

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;
    }
}

ファイル形式に列挙型を使用することも検討します。これにより、形式の処理が楽になります。

于 2013-02-02T12:51:15.893 に答える
0

このタスク全体はJFileChooser、サポートされている画像タイプのフィルターを使用する方が適していると思います。

関連している

于 2013-02-03T03:52:21.260 に答える