拆分空格分隔列表

2022-09-04 05:40:11

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

the quick brown fox

我们想要:

"the"
["quick","brown","fox"]

..在两个不同的变量中。第一个变量应该是字符串,第二个变量应该是数组。我正在寻找一种优雅的方法来做到这一点(最好是在Java中)。


答案 1

对于某些优雅的价值观:

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

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


答案 2

最优雅的大概是用来得到一个,然后用把它变成一个。如果您确实需要一个单独的列表减去头部,只需使用.String.splitString[]Arrays.asListList<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"

使用 a 可以利用 Java 集合框架提供的丰富功能。List

另请参见