我正在制作一个基于文本的骰子滚筒.它接受像"2d10 + 5"这样的字符串,并且作为滚动的结果返回一个字符串.我的问题出现在tokenizer中,它将字符串拆分为有用的部分,以便我解析信息.
String[] tokens = message.split("(?=[dk\\+\\-])");
这会产生奇怪的,意想不到的结果.我不知道究竟是什么导致了他们.它可能是正则表达式,我的误解,或Java只是Java.这是发生了什么:
3d6+4产生字符串数组[3, d6, +4].这是对的.d%产生字符串数组[d%].这是对的.d20产生字符串数组[d20].这是对的.d%+3产生字符串数组[, d%, +3].这是不正确的.d20+2产生字符串数组[, d20, +2].这是不正确的.在第四和第五个例子,一些奇怪的从而导致额外的空字符串出现在阵列的前部.这并不是字符串前面缺少数字,因为其他例子反驳了这一点.这不是百分号的存在,也不是加号.
现在我只是通过对空字符串循环继续,但那种感觉八九不离十像创可贴的解决方案.有没有人知道是什么原因造成阵列前面的空白字符串?我该如何解决?