Вопрос: это желаемое поведение или ошибка?
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, результаты такие же.