Разделитель Guava с limit () и omitEmptyStrings () несовместим - PullRequest
2 голосов
/ 26 мая 2020

Вопрос: это желаемое поведение или ошибка?

Javado c не упоминает этот угловой случай. Я могу понять, как код дает этот результат, потому что только после достижения счетчика предельного размера символы разделителя сохраняются в содержимом.

String key = "mykey";
String value = "=2>@C=b";
String combined = key +"=" + value;

Splitter.on('=').limit(2).omitEmptyStrings().splitToList(combined);

Результат: (первый знак равенства значения теряется)

[mykey, 2> @ C = b]

Splitter.on('=').limit(2).splitToList(combined);

Результат: как и ожидалось.

[mykey, = 2 > @ C = b]

Javado c для omitEmptyStrings () говорит:

"Возвращает разделитель, который ведет себя аналогично этому разделителю, но автоматически пропускает пустой строки из результатов. "

Я использую trimResults () и omitEmptyStrings (), чтобы обрезать пробелы. Я никоим образом не ожидал, что это приведет к разделению контента. При объявлении ограничения (2) я ожидаю, что все после первого символа разделителя будет присвоено второму значению.

Протестировано в версиях Guava 29.0-jre и 21, результаты такие же.

...