Как обращаться с нулем в pattern.compile? - PullRequest
2 голосов
/ 31 мая 2011

Как обработать NULL при использовании pattern.compile? Я использую следующую строку для сравнения строк

if(Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find())

В некоторых случаях s1 может иметь значение NULL, и, очевидно, он вызывает исключение нулевого указателя. Я знаю, что это может быть обработано другим условием "если" для s1. Но я хотел бы знать любое другое альтернативное решение?

EDIT

Iterator iter = sampleList().iterator();
while (iter.hasNext()) {
    SampleObj so = (SampleObj) iter.next();
    if (!s1.equalsIgnoreCase("")) {
        if (Pattern.compile(Pattern.quote(s1), Pattern.CASE_INSENSITIVE).matcher(so.getS1()).find())
            match = true;
        else
            match = false;
    }
    if (!s3.equalsIgnoreCase("")) {
        if (Pattern.compile(Pattern.quote(s3), Pattern.CASE_INSENSITIVE).matcher(so.getS3()).find())
            match = true;
        else
            match = false;
    }
}

S1 и S3 - входы, которые совпадают по итератору.

Ответы [ 3 ]

8 голосов
/ 31 мая 2011

Вы должны проверить на ноль;например,

if(s1 != null && Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find()))
5 голосов
/ 31 мая 2011

Pattern.matcher() всегда будет выдавать NullPointerException при передаче null, поэтому: нет, другого способа нет, вам придется явно проверять null.

0 голосов
/ 17 июня 2019

Я использую

String.valueOf(s1)

, что приводит к тому, что вместо нуля появляется «ноль».

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