好的,所以赋值是我取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
附言:您还在正则表达式中设置了两次")"字符