-2

我搜索了很多关于正则表达式的信息,最后我发现最好使用“\\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)
4

1 回答 1

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 想要的。

于 2012-05-02T18:22:56.257 回答