首页 > 解决方案 > 如何根据 Java 中的两个符号对字符串进行转换/排序?

问题描述

我有以下字符串:

String string = "bbb,aaa,ccc\n222,111,333\nyyy,xxx,zzz";

我正在尝试将其转换为:

String converted = "aaa,bbb,ccc\n111,222,333\nxxx,yyy,zzz";

以某种方式排序。这是我到目前为止所尝试的:

String[] parts = string.split("\\n");
List<String[]> list = new ArrayList<>();
for(String part : parts) {
    list.add(part.split(","));
}

for(int i = 0, j = i + 1, k = j + 1; i < list.size(); i++) {
    String[] part = list.get(i);
    System.out.println(part[i]);
}

所以我设法分别从每个“单元”中获取第一个元素。但是如何获取所有并订购它们以便我得到那个结果?

使用 Java8 可以更简单吗?

提前致谢!

标签: javastringsortingjava-8

解决方案


我想一种方法是:

String result = Arrays.stream(string.split("\\n"))
                          .map(s -> {
                              String[] tokens = s.split(",");
                              Arrays.sort(tokens);
                              return String.join(",", tokens);
                          })
                          .collect(Collectors.joining("\\n"));

System.out.println(result); // aaa,bbb,ccc\n111,222,333\nxxx,yyy,zzz

请注意,如果您的模式比\nor更复杂,- 最好将它们单独提取Pattern(s)


推荐阅读