在java中拆分Lisp表达式



好的,所以赋值是我取Lisp表达式:

'(A B C D)

并将其转换为

'(D C B A)

在Java中。要做到这一点,我有这样的代码:

String[] items = input.split(" |\(|\)|'");
int y = 0;
for (String x : items){ //this part is purely for debugging
    System.out.println(y + " " + x);
    y++;
}

这样它就被一个空格,(,)和'分开了。我应该得到的输出是

0 A
1 B
2 C
3 D

但由于某种原因,我得到的输出是

0
1
2 A
3 B
4 C
5 D

为什么会发生这种情况?另外,有没有人对更好的方法有什么建议?

以字符'结尾的子字符串是空子字符串,以(结尾的字符串也是空子字符串

您使用的方法将String分解为以分隔符结束的子字符串。

简单地说,拆分时您的字符串如下所示:

"" (emptyString) between start of string and first delimiter match "'"
"" between first delimiter "'" and second delimiter "("
"A" between second delimiter "(" and third delimiter " " (space)
"B" between third delimiter " " and fourth delimiter " "
"C" between fourth delimiter " " and fifth delimiter " "
"D" between fifth delimiter " " and sixth delimiter ")"

由于您没有提供匹配数量的限制,因此默认情况下拆分会删除尾随空格。如果您使用.split(regex,-1)来调用它,它不会忽略它们,还会提供以下元素:

"" between sixth delimiter ")" and the end of the string

附言:您还在正则表达式中设置了两次")"字符

最新更新