Я делаю текстовый ролик для кости. Он принимает строки типа "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 на пустых строках, но это похоже на решение для групповой помощи. Кто-нибудь знает, что вызывает пустую строку в передней части массива? Как я могу это исправить?