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", "");
Другие вопросы по тегам