StringUtils#containsAnyメソッドの注意
org.apache.commons.lang3.StringUtils
クラスのcontainsAny
はオーバーロードされたいくつかのメソッドがあるが、ハマりやすい挙動があるため注意。
第2引数がCharSequence
の
public static boolean containsAny(final CharSequence cs, final CharSequence searchChars)
の方のメソッドは、第2引数の文字列に含まれるいずれかの文字
が含まれていた場合にtrueとなってしまう。
// 例
StringUtils.containsAny("abcde", "aaa"); // true
StringUtils.containsAny("abcde", "efghi"); // true
第2引数がCharSequence...
の
public static boolean containsAny(final CharSequence cs, final CharSequence... searchCharSequences)
の方は可変引数を使って以下のような挙動となる。
// 例
StringUtils.containsAny("abcde", "aaa", "bbb", "ccc"); // false
StringUtils.containsAny("abcde", "cde", "def", "efg"); // true
可変引数のメソッドなのに、引数の数が1
のときだけ挙動が変わるメソッドのため、これからバリエーション増えそうだからStringUtils.contains()
じゃなくてStringUtils.containsAny()
にしとこうという安易な考えでハマらないように注意。