Java 根据方括号中的值对字符串进行排序

Java 根据方括号中的值对字符串进行排序,java,regex,string,Java,Regex,String,我有一根绳子 [01:07]bbbbbbb[00:48]aaaaaa[01:36]ccccccccc[03:45]gggggggg[03:31]fffffff[01:54]ddddddddd[02:09]eeeeeee[03:59]hhhhhhhh [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh 这需要

我有一根绳子

[01:07]bbbbbbb[00:48]aaaaaa[01:36]ccccccccc[03:45]gggggggg[03:31]fffffff[01:54]ddddddddd[02:09]eeeeeee[03:59]hhhhhhhh
[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
这需要分类为

[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
它基于方括号内的字符串。
如何在java中执行此操作?

建议的算法
[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
你可以简单地:

[00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
  • 在每个新时间戳上拆分
    字符串
    ,然后
  • 对结果数组进行排序最后
  • 连接其有序内容
  • 实际代码示例 使用Java 8中介绍的
    库,可以在单个表达式中完成:

    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
    
    final String sorted = Arrays.asList(input.split("(?=\\[)")).stream().sorted().collect(Collectors.joining());
    
    Java 8之前的原始答案 输出:

    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
    
    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh
    
    评论部分的后续问题 为什么要执行
    input.split((?=\\[)”)

    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
    
    String#split
    与正则表达式一起使用,但是
    [
    (和
    ]
    )不是标准字符,“regex-wise”。因此,它们需要转义——使用
    \[
    (和
    \]

    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
    
    但是,在Java
    字符串中,
    \
    也不是标准字符,也需要转义

    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh  
    

    有关详细信息,请参阅。

    当您说“对齐”时,您的意思是“已排序”,对吗?@ccjmne您能解释一下输入。拆分(\[”),我知道拆分方法,但从未见过这种拆分。如果您能详细解释一下,我将不胜感激。@Kapilchattani当然,您是对的,我应该/本可以解释一下。我刚刚在我的答案中添加了这种解释。谢谢您指出这一点!
    [00:48]aaaaaa[01:07]bbbbbbb[01:36]ccccccccc[01:54]ddddddddd[02:09]eeeeeee[03:31]fffffff[03:45]gggggggg[03:59]hhhhhhhh