You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何按特定倍数的字符序列分割字符串?

解决Java中按3的倍数长度连续0序列分割字符串的问题

首先得指出你之前的正则写法问题所在:你用的[0{3}]是字符类(character class),在字符类里{、3、}都是字面量字符,这个正则实际上会匹配单个的0、{、3或},完全不是你想要的“连续3个0的重复序列”,这就是为什么split没生效。

正确的正则表达式

要匹配长度为3的倍数的连续0序列(比如3个、6个、9个...),你需要用这个正则:(0{3})+

  • 0{3}:精确匹配3个连续的0
  • +:表示前面的分组(也就是3个0)可以重复1次或多次,这样就覆盖了3、6、9...个连续0的情况

Java代码示例

public class BinarySplit {
    public static void main(String[] args) {
        String binaryStr = "101010100010000001110101110111";
        // 使用正确的正则进行分割
        String[] parts = binaryStr.split("(0{3})+");
        
        // 验证结果
        System.out.println(java.util.Arrays.toString(parts));
        // 输出:[1010101, 1, 1110101110111]
    }
}

额外注意点

如果你的字符串开头或结尾存在符合条件的0序列(比如"000123000"),split后会产生空字符串:

String testStr = "000123000";
String[] testParts = testStr.split("(0{3})+");
// 输出:[, 123, ]

如果需要过滤掉这些空字符串,可以用流处理:

import java.util.Arrays;
import java.util.stream.Collectors;

// ...

String[] filteredParts = Arrays.stream(testParts)
                               .filter(s -> !s.isEmpty())
                               .toArray(String[]::new);
// 输出:[123]

内容的提问来源于stack exchange,提问作者Joey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:38:57