как посредством contains в java отличить SA-30 от SA-3 или же SA-1 от SA-1 RC
Имеем строки:
- 17:14:47 352765 SA-30 Запрос 'Messages' успешно обработан
- 20:15:31 352765 SA-3 Запрос 'Messages' успешно обработан
- 16:32:14 352765 SA-1 RC Запрос 'ErrorLog' успешно обработан
- 20:15:31 352765 SA-1 Запрос 'Messages' успешно обработан
**Как посредством if (line.contains("SA-1")) res=line; выбрать только строку 4 и не выбрать строку 3 **
Результат должен быть следующим:
res=20:15:31 352765 SA-1 Запрос 'Messages' успешно обработан
Если для 3 и 4 строки нет решения, то подскажите как быть SA-30 от SA-3 то есть 1 и 2 строкой?
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Все просто проверяете с пробелами. Т.е чем точнее поиск тем меньше данных. Не мучайте себя. Исключайте не нужные путем добавления данных
public static void main(String[] args) throws Exception {
String[] str =
new String[] {
"17:14:47 352765 SA-30 Запрос 'Messages' успешно обработан",
"20:15:31 352765 SA-3 Запрос 'Messages' успешно обработан",
"16:32:14 352765 SA-1 RC Запрос 'ErrorLog' успешно обработан",
"20:15:31 352765 SA-1 Запрос 'Messages' успешно обработан"
};
Stream.of(str).filter(item -> item.contains(" SA-3 ")).forEach(System.out::println);
// 20:15:31 352765 SA-3 Запрос 'Messages' успешно обработан
}
Автор решения: SemperAnte
→ Ссылка
Можно попробовать просто идти от большего к меньшему:
if(line.contains("SA-30"))
{
//Найдена 1 строка
}
else if(line.contains("SA-3"))
{
//Найдена 2 строка
}
else if(line.contains("SA-1 RC"))
{
//Найдена 3 строка
}
else if(line.contains("SA-1"))
{
//Найдена 4 строка
}