如何在pattern.compile中处理Null?

时间:2011-05-31 11:54:23

标签: java design-patterns

如何在使用pattern.compile时处理NULL?我正在使用以下行来比较字符串

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

在某些情况下,s1可能为NULL,显然它会抛出Null指针Exception。我知道这可以通过s1的另一个“if”条件来处理。但我想知道其他任何替代解决方案吗?

修改

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 个答案:

答案 0 :(得分:7)

你必须检查null;例如,

if(s1 != null && Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find()))

答案 1 :(得分:4)

在传递Pattern.matcher()时,

NullPointerException将始终抛出null,因此:不,没有其他办法,您必须明确检查null

答案 2 :(得分:0)

我使用

String.valueOf(s1)

这将导致结果为“ null”而不是null。