我有一个字符串,例如:
[01:07]bbbbbbb[00:48]aaaaaa[01:36]ccccccccc[03:45]gggggggg[03:31]fffffff[01:54]ddddddddd[02:09]eeeeeee[03:59]hhhhhhhh
Run Code Online (Sandbox Code Playgroud)
这需要排序为
[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh
Run Code Online (Sandbox Code Playgroud)
它基于方括号内的字符串.
我怎么能在java中这样做?
ccj*_*mne 10
你可以简单地说:
String在每个新时间戳上拆分你使用Java 8中Stream引入的库,可以在单个表达式中完成:
final String sorted = Arrays.asList(input.split("(?=\\[)")).stream().sorted().collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
final String input = "[01:07]bbbbbbb[00:48]aaaaaa[01:36]ccccccccc[03:45]gggggggg[03:31]fffffff[01:54]ddddddddd[02:09]eeeeeee[03:59]hhhhhhhh";
final String entries[] = input.split("(?=\\[)");
Arrays.sort(entries);
String res = "";
for (final String entry : entries) {
res += entry;
}
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)
输出:
[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh
Run Code Online (Sandbox Code Playgroud)
我为什么这样做
input.split("(?=\\[)")?
String#split使用正则表达式,但[(和])不是标准字符,"正则表达式".所以,他们需要被转义 - 使用\[(和\]).
但是,在Java中 String,\它既不是标准字符,也需要进行转义.
有关详细信息,请参阅Stack Overflow上的此答案.