在Java

时间:2018-04-11 11:23:02

标签: java string split

如何在Java中围绕特定数字的多个字符序列拆分字符串?示例:我有一个二进制字符串

101010100010000001110101110111

我希望将它分成零序列,即3的倍数,即它应该返回

[1010101, 1, 1110101110111]

(它应该采用零的正则表达式序列,可以被3整除,在这种情况下为000和000000)

我尝试使用split("[0{3}]+"),但它不起作用。

4 个答案:

答案 0 :(得分:4)

我认为split("(0{3})+")应该解决它。在[]之间放置一些东西意味着您正在尝试查找该块中的某些字符。

<强>更新

如果我们想要评论中所需的内容,它应该是这样的: split("(?<!0)(0{3})+(?!(0{1,2}))")。它有点复杂,但它应该提供所需的输出。

所以我们假设我们有100001作为输入。部分(?<!0)将确保开头永远不会有0,否则结果可能看起来像[10, 1](?!(0{1,2}))会检查是否有1个或2个0

这将为[100001]提供给定的输入。输入1000100001会产生[1, 100001]

答案 1 :(得分:1)

尝试

String str = "101010100010000001110101110111";
String[] strArray = str.split("(0{3})+");
System.out.println(Arrays.toString(strArray));

答案 2 :(得分:0)

尝试

class Scratch {
    public static void main(String[] args) {
        String s = "101010100010000001110101110111";

        for (String el : s.split("(0{3})+")) {
            System.out.println(el);
        }

    }
}

答案 3 :(得分:0)

使用正则表达式分割字符串。

这是一个非常强大的工具。几乎是一种语言本身。

在您的情况下

<强> s.split( “0 {3,}”)

见。

大卫。