2013-11-27 1 views
0

Рассмотрим карту, как показано ниже:Найдите строку с некоторыми ключами в Java

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 

Я не чувствую себя хорошо с этим Approch! По крайней мере, я думаю, что есть некоторые ЛИЭСЫ, например, в StringUtils, которые могут сделать что-то вроде:

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

Это как некоторые упрощающие мой метод.

Но я ничего не мог найти. Любые комментарии?!

ответ

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».

0

Карта - это простая и лучшая реализация для хранения пар ключ-значение.

Почему вы не можете напрямую использовать метод получения карты с ключом?

exportContentType = exportTypes.get(exportBtn); 
if(exportContentType !=null || exportcontentType.isEmpty()) 
    throw error; 
else 
export = exportBtn; 
+0

ExportBtn может быть «Сделать PDF», «Экспорт в PDF», это не всегда «PDF»! –

+0

Извините за неполный ответ. Код, который вы написали, - это способ сделать то, что вы хотите. Таким образом, существуют библиотечные методы, которые помогут вам в этом. Единственное изменение, которое я бы предпочел сделать, - это повторить набор записей, кроме набора ключей. –