Перевод простого Grep на Java - PullRequest
       0

Перевод простого Grep на Java

1 голос
/ 20 декабря 2011

При поиске

grep -aiH '^WARN\|^ERROR\|^FATAL' myLogFile.log | \
...

я писал

if (!line.startsWith("ERROR") || !line.startsWith("WARN") 
           || !line.startsWith("FATAL")) {
...

Но как можно было бы принять во внимание флаг "i", чтобы сравнение было безразличным?

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Сначала преобразуйте строку в строку верхнего регистра, используя этот метод:

http://docs.oracle.com/javase/1.3/docs/api/java/lang/String.html#toUpperCase()

Поэтому вместо !line.startsWith(...) напишите !line.toUpperCase().startsWith(...).

1 голос
/ 20 декабря 2011

Также может понадобиться посмотреть на commons-lang StringUtils:

http://commons.apache.org/lang/api/org/apache/commons/lang3/StringUtils.html

Например !StringUtils.startsWithIgnoreCase(line, "ERROR")

Это имеет преимущество в том, что оно также является нулевым; если line равно нулю, оно будет возвращать ложь, а не выбрасывать исключение NullPointerException.

наконец - вы также можете попробовать что-то вроде !line.matches("(?i)(WARN|ERROR|FATAL).*")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...