Java String.split () иногда дает пустые строки
Я делаю текстовый ролик для игры в кости. Он принимает в виде строк "2d10 + 5" и возвращает строку в результате броска (ей). Моя проблема обнаруживается в токенизаторе, который разбивает строку на полезные части, чтобы я мог разобрать информацию.
String[] tokens = message.split("(?=[dk\\+\\-])");
Это дает странные, неожиданные результаты. Я нене знаю точно, что их вызывает. Это может быть регулярное выражение, мое недоразумение или просто Java. Вот'с чемпроисходит:
3d6+4
дает массив строк[3, d6, +4]
, Это правильно.d%
дает массив строк[d%]
, Это правильно.d20
дает массив строк[d20]
, Это правильно.d%+3
дает массив строк[, d%, +3]
, Это неверноd20+2
дает массив строк[, d20, +2]
, Это неверноВ четвертом и пятом примере что-то странное заставляет дополнительную пустую строку появляться в начале массива. Это'не отсутствие числа в начале строки, как это подтверждают другие примеры. Это'не наличие ни знака процента, ни знака плюс.
Сейчас яЯ просто продолжаю цикл «for» на пустых строках, но это похоже на решение проблемы с пластырем. У кого-нибудь есть идеи, что вызывает пустую строку в начале массива? Как я могу это исправить?