StringUtils#splitメソッドの注意
org.apache.commons.lang3.StringUtils
クラスのsplit
メソッドは、String
クラスのsplit
メソッドとは若干挙動が異なるため注意。
StringUtils#split
メソッドによって文字列を分割した場合、分割後のトークンが空文字となる場合は返却される配列に含まれない。
// 例
StringUtils.split("a.b.c", '.') // = ["a", "b", "c"]
StringUtils.split("a..b.c", '.') // = ["a", "b", "c"]
StringUtils.split("a:b:c", '.') // = ["a:b:c"]
StringUtils.split("a b c", ' ') // = ["a", "b", "c"]
分割後のトークンが空文字の場合でも返却される配列に含めるためには、StringUtils#splitPreserveAllTokens
メソッドを使用すれば良い。
// 例
StringUtils.splitPreserveAllTokens("abc def", null) // = ["abc", "def"]
StringUtils.splitPreserveAllTokens("abc def", " ") // = ["abc", "def"]
StringUtils.splitPreserveAllTokens("abc def", " ") // = ["abc", "", def"]
StringUtils.splitPreserveAllTokens("ab:cd:ef", ":") // = ["ab", "cd", "ef"]
StringUtils.splitPreserveAllTokens("ab:cd:ef:", ":") // = ["ab", "cd", "ef", ""]
StringUtils.splitPreserveAllTokens("ab:cd:ef::", ":")// = ["ab", "cd", "ef", "", ""]
StringUtils.splitPreserveAllTokens("ab::cd:ef", ":") // = ["ab", "", cd", "ef"]
StringUtils.splitPreserveAllTokens(":cd:ef", ":") // = ["", cd", "ef"]
StringUtils.splitPreserveAllTokens("::cd:ef", ":") // = ["", "", cd", "ef"]
StringUtils.splitPreserveAllTokens(":cd:ef:", ":") // = ["", cd", "ef", ""]