Apache Commons Lang. Stringutils.splitByWholeseparator делает странные вещи.
Как я понимаю из официальной документации, null в качестве разделительной строки должен делиться на WhiteSpace, так что это
System.out.println(JSON.serialize(StringUtils.splitByWholeSeparator("ab de fg", null)));
должен производить[ "ab" , "de" , "fg"]
Однако чего я не понимаю, так это почему пустая строка "" также разделяется на пробелы. Следующий производит тот же результат.
System.out.println (JSON.serialize (StringUtils.splitByWholeSeparator ("ab de fg", ""))));
Официальная документация по адресу https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html не упоминает такого эффекта.
1 ответ
Ты прав. Недостаток в документации null
а также empty
Разделитель строк приведет к разбиению пробела.
Внутренне код делает это:
if (separator == null || EMPTY.equals(separator)) {
// Split on whitespace.
return splitWorker(str, null, max, preserveAllTokens);
}
Таким образом, эти два вызова будут давать одинаковый результат:
StringUtils.splitByWholeSeparator("ab de fg", null);
StringUtils.splitByWholeSeparator("ab de fg", "");