Я пытаюсь выяснить, как взять строку с разделителями-запятыми в качестве входных данных и определить, есть ли в ней строки, которые не соответствуют следующему набору
{FF, SF, FB, SB,Пауза}
Таким образом, когда я анализирую строку (которая может быть любой комбинацией вышеупомянутого), если он обнаруживает, например, «FfdsG», он должен выдать ошибку.Я предполагаю, что могу использовать какое-то регулярное выражение для выполнения этого или серии ifs.
EDIT ....
Моя реализация плоха?Я преобразовываю строку во все нижнее и затем сравниваю.Неважно, что я посылаю в качестве входных данных (FB или FB, FF или что-то еще), кажется, что все помечены как плохие ...
`public static String check(String modes) {
String s = modes;
String lower = s.toLowerCase();
HashSet<String> legalVals = new HashSet<String>();
legalVals.add("ff");
legalVals.add("sf");
legalVals.add("fb");
legalVals.add("sb");
legalVals.add("pause");
String valToCheck = lower;
if (legalVals.contains(valToCheck)) { //False
String str = modes;
} else {
return "Bad value: " + modes;
}
return modes;
}
Чтобы быть понятным, строка ввода может быть любой комбинацией из 5действительные значения я перечислил.это может быть один из них или все 5. Я просто пытаюсь определить, обнаружено ли в любое время значение, которое не входит в список 5. Надеюсь, это имеет смысл.
Завершеноидя с ниже.
String[] words = {"ff", "sf", "fb", "sb", "pause"};
List<String> validList = Arrays.asList(words);
String checkInput = lower;
for (String value : checkInput.split( "," ))
{
if( !validList.contains( value ) )
{
throw new Exception("Invalid mode specified: " + modes);
}
}