我有String s = "#stack###over##flow".怎么分裂s才有
String[] a = {"#", "stack", "###", "over", "##", "flow}
Run Code Online (Sandbox Code Playgroud)
我试图s.split("(?<=#)|(?=#)")在如何分割字符串,但也保持分隔符?但它给了
String[] a = {"#", "stack", "#", "#", "#", "over", "#", "#", "flow}
Run Code Online (Sandbox Code Playgroud)
该lookarounds需要多一点自信,这意味着向后看需要断言以下位置可以是一个单词字符或不#与前瞻需要断言前面的位置可以是一个单词字符或不#作为好.
String s = "#stack###over##flow";
String[] a = s.split("(?<=#\\b)|(?=\\b#)");
System.out.println(Arrays.toString(a)); //=> [#, stack, ###, over, ##, flow]
Run Code Online (Sandbox Code Playgroud)
或修改您的外观断言(更长的方法):
String[] a = s.split("(?<=#(?!#))|(?<=[^#](?=#))");
Run Code Online (Sandbox Code Playgroud)