0

考虑如下地图:

Map("PDF","application/pdf")
Map("XLSX","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Map("CVS","application/csv")
....

有一个导出方法,它获取导出按钮名称并找到导出类型和应用程序内容类型

public void setExport(String exportBtn) {       
        for (String key : exportTypes.keySet()) {
            if (exportBtn.contains(key)) {
                this.export = key;
                this.exportContentType = exportTypes.get(key);
                LOG.debug("Exporting to {} ", this.export);
                return ;
            }
        }
    }

这个方法可以称为

setExport("PDF") >> export=PDF, exportContentType=application/pdf
setExport("Make and PDF") >> PDF, exportContentType=application/pdf
setExport("PDF Maker") >> PDF, exportContentType=application/pdf

我对这种方法感觉不好!至少我认为有一些库,例如在 StringUtils 中,可以执行以下操作:

String keys[]={"PDF","XLSX","CVS"};
String input="Make the PDF";
selectedKey = StringUtils.xxx(input,keys);

这可以简化我的方法。

但我什么也找不到。任何意见?!

4

2 回答 2

0

Map 是存储键值对的最简单和最好的实现。

为什么不能直接用key的map的get方法呢?

exportContentType = exportTypes.get(exportBtn);
if(exportContentType !=null || exportcontentType.isEmpty())
   throw error;
else
 export = exportBtn;
于 2013-11-27T13:56:31.710 回答
0

您可以使用 Regex 来解决此问题,如下所示:

final Pattern pattern = Pattern.compile("(PDF|XLSX|CVS)");
final Matcher matcher = pattern.matcher("Make the PDF");

if (matcher.find()) {
  setExportType(matcher.group());
}

然后,您需要在程序上创建模式以包含所有键一次,当然使用按钮的名称而不是“制作 PDF”。

于 2013-11-27T14:04:54.970 回答