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

コメント (0)

あなたもコメントしてみませんか

アカウント新規作成(無料)

既にアカウントを持っている方は ログイン