Функция Разделения Apache StringUtils сводит с ума
-
21-12-2019 - |
Вопрос
Я размышлял об этой сумасшедшей штуке в StringUtils.split(string,separator);
Я хочу отделить строку с помощью разделителя @@--@@
и мой код выглядит примерно так.
String[] strings = StringUtils.split("kayf86@--@9@--@5r43987@!@!%%^&^$%@!@!%-@@*&%$*(&^$%@!@!%--@", "@--@");
for (String string : strings) {
System.out.println(string);
}
Я нашел результат как таковой
kayf86
9
5r43987
!
!%%^&^$%
!
!%
*&%$*(&^$%
!
!%
Я использую commons-lang-2.6.jar
Может ли кто-нибудь объяснить, как это произошло?
Решение
StringUtils
использует любой из символов в separatorChars
аргумент в качестве разделителя, не обязательно весь целиком.Тот Самый Javadoc также говорится
Разделитель не включен в возвращаемый массив строк. Смежные разделители обрабатываются как один разделитель.
Параметры
- Разделители символы, используемые в качестве разделителей, null разбиваются на пробелы
В качестве альтернативы вы можете использовать StringUtils.splitByWholeSeparator(String, String)
разделить на точные @--@
или что бы это ни было.
Другие советы
В этом сценарии требуется оба @, - в качестве разделителя так, вот почему этот вывод производится. Для точного вывода вы должны попробовать какой-то другой «сепаратор»
Для обозначения: