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