如何在使用pattern.compile時處理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是它們匹配超過迭代器的輸入。
@你的情況下'null'的預期行爲是什麼? – Dewfy 2011-05-31 11:57:18
@Dewfy雖然它是空的,我希望不會拋出空指針異常。我希望沒有明確的「如果」條件應該寫入檢查null – Samrat 2011-05-31 12:13:39
我不知道爲什麼你會這樣寫它首先。 Pattern.compile()應該被調用一次,而不是每次使用該模式。這是整個想法。編譯昂貴,使用便宜。如果您需要每次都重新編譯,也就是說,如果正則表達式是動態的,那麼您最好使用Pattern.matches()。 – EJP 2011-05-31 23:22:44