Я анализирую файлы журнала, и мне нужно сделать одну вещь, когда найдено регулярное выражение (добавить ', TRUE' к переменной, .csv, ArrayList), и что-то еще (добавить пустой слот, "," или «, _», если пустой слот не подходит), когда это регулярное выражение не найдено.
В каждом файле журнала может быть проанализировано от 1 до 200 записей, поэтому регулярное выражение может совпадать от одного до нескольких.
Я пробовал несколько вариантов, либо получал ошибку при компиляции (не нравится тестирование логического значения для строки), никаких наблюдаемых действий не происходит, или когда регулярное выражение найдено, я получаю результат, когда регулярное выражение не найдено.
Мне нужен вывод в переменной .csv или ArrayList, поэтому, если совпадение не найдено, мне нужен пустой «,», потому что вывод представляет собой предопределенную таблицу, поэтому столбцы необходимо правильно выровнять .
Комбинации, которые я пробовал:
if(!noBaseText.equals("No matching base data found"))
if(!noBaseText.equals("No matching base data found") == false)
if(noBaseText.equals("No matching base data found" != true))
if(noBaseText.isEmpty())
if(noBaseText.equals(""))
if(!noBaseText.equals(""))
if(noBaseText.equals("No matching base data found"))
'} else {' и '} else if (...) {' с указанными выше комбинациями, как в случае вложенного if / else (как в коде ниже), так и в виде 'else' в 'if (baseMatcher) .find ()) 'возвращает идентичные результаты.
Фрагмент кода:
Pattern noBase = Pattern.compile("(?<noBase>No matching base data found)");
try(corrReader)
{
while ((corrLine = corrReader.readLine())!=null)
{
corrText = corrLine.trim();
Matcher baseMatcher = noBase.matcher(corrText);
if (baseMatcher.find())
{
String noBaseText = baseMatcher.group("noBase");
if(!noBaseText.equals("No matching base data found"))
{
corrOutput += ",";
} else if(noBaseText.equals("No matching base data found")) {
corrOutput += ",TRUE";
} //end else
} //end if(baseMatcher)
} //end while(corrLine)
} //end try(corrReader)
Вывод, который я получаю при совпадении:
AA-123-12345-SP1.SSF, TRUE,
Вывод, который я получаю, когда нет совпадения:
AA-123-12345-SP2.SSF, 100100, guug04314054.zip,
Вывод, который мне нужно получить, когда нет совпадения:
AA-123-12345-SP2.SSF ,, 100100, guug04314054.zip
Когда регулярное выражение совпадает и возвращается ', TRUE', следующих записей не будет; когда регулярное выражение не совпадает и возвращается ',', будут дополнительные записи.