我搜索了很多关于正则表达式的内容,最后我发现最好使用“\\ s +”来分割字符串
但令人惊讶的是它与原始字符串无关:
private static void process(String command) {
command = command.substring(0, command.length() - 1);
String[] splitted = command.split("\\s+");
for (String str : splitted) {
System.out.println(str);
}
}
示例输入:
Boolean b = new Boolean(true);
首选输出:
[Boolean,b,=,new,Boolean(true)]
但我的方法输出是:
Boolean b = new Boolean(true)
答案 0 :(得分:2)
如果您希望“首选输出”使用Arrays.toString(splitted)
。但是,您的代码可以像预期的那样工作。它在新行上打印数组的每个元素。所以这段代码:
private static void process(String command) {
command = command.substring(0, command.length() - 1);
String[] splitted = command.split("\\s+");
for (String str : splitted) {
System.out.println(str);
}
System.out.println(Arrays.toString(splitted).replace(" ", ""));
}
public static void main(String[] args) {
process("Boolean b = new Boolean(true); ");
}
生成此输出:
Boolean
b
=
new
Boolean(true);
[Boolean, b, =, new, Boolean(true);]
请注意,由于输入字符串中的尾随空格,substring
操作无法正常工作。您可以事先使用command.trim()
来删除任何前导/尾随空格。
修改强> 的
我编辑了我的代码,因为正如@Tim Bender所说,Arrays.toString
的输出中的数组元素之间存在空格,而这并不是OP想要的。