小编Cor*_*oel的帖子

Java String.split()有时会给出空字符串

我正在制作一个基于文本的骰子滚筒.它接受像"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].这是不正确的.

在第四和第五个例子,一些奇怪的从而导致额外的空字符串出现在阵列的前部.这并不是字符串前面缺少数字,因为其他例子反驳了这一点.这不是百分号的存在,也不是加号.

现在我只是通过对空字符串循环继续,但那种感觉八九不离十像创可贴的解决方案.有没有人知道是什么原因造成阵列前面的空白字符串?我该如何解决?

java regex string split

13
推荐指数
2
解决办法
4161
查看次数

标签 统计

java ×1

regex ×1

split ×1

string ×1