拆分空格分隔列表

Wra*_*ram 10 java string

这是我面临的一项常见任务:将空格分隔列表拆分为head元素和包含tail元素的数组.例如,给定此字符串:

the quick brown fox
Run Code Online (Sandbox Code Playgroud)

我们想要:

"the"
["quick","brown","fox"]
Run Code Online (Sandbox Code Playgroud)

..在两个不同的变量.第一个变量应该是一个字符串,第二个变量应该是一个数组.我正在寻找一种优雅的方式(最好用Java).

Alt*_*ape 27

对于某些优雅的价值观:

String input = "The quick brown fox";
String[] elements = input.split(" ");
String first = elements[0];
String[] trailing = Arrays.copyOfRange(elements,1,elements.length);
Run Code Online (Sandbox Code Playgroud)

我想不出用更少的代码来做到这一点的方法......

  • `Arrays.copyOfRange()` - 哇,谢谢,我每天都从其他人的答案中学到新东西! (3认同)

pol*_*nts 7

最优雅的可能是String.split用来获得一个String[],然后用Arrays.asList它来变成一个List<String>.如果你真的需要一个单独的列表减去头部,只需使用List.subList.

    String text = "the quick brown fox";
    List<String> tokens = Arrays.asList(text.split("\\s+"));

    String head = tokens.get(0);
    List<String> body = tokens.subList(1, tokens.size());

    System.out.println(head); // "the"
    System.out.println(body); // "[quick, brown, fox]"

    System.out.println(body.contains("fox")); // "true"
    System.out.println(body.contains("chicken")); // "false"
Run Code Online (Sandbox Code Playgroud)

使用a List允许您利用Java Collections Framework提供的丰富功能.

也可以看看