在Java中替换复杂的字符序列

在Java中替换复杂的字符序列,java,Java,我的要求是从文件中读取并替换两个分号出现的顺序;;在包含0的文件中 这里的问题是,当有两个以上的连续发生时,比如“;;” 我无法正确地替换0,没有任何关于在Java中实现它的建议 样本输入为5;4.4.4.4.3.1.5.4.5.3.5.5.5.3.5; 输出将是54 0 4 0 0 0 0 4 0 0 3 0 1 5 4 5 0 3 5 0 5 0 0 0 0 0 0 0 0 0 5我想这就是你想要的 import java.util.regex.Pattern; import java.ut

我的要求是从文件中读取并替换两个分号出现的顺序;;在包含0的文件中

这里的问题是,当有两个以上的连续发生时,比如“;;”

我无法正确地替换0,没有任何关于在Java中实现它的建议

样本输入为5;4.4.4.4.3.1.5.4.5.3.5.5.5.3.5;


输出将是54 0 4 0 0 0 0 4 0 0 3 0 1 5 4 5 0 3 5 0 5 0 0 0 0 0 0 0 0 0 5

我想这就是你想要的

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class Untitled {
    public static void main(String[] args) {
        String replaced = replaceSemiColons("5;4;;;4;4;;;;4;;;3;;1;5;4;5;;3;5;;5;;5;3;;;;;;;;;;;;5;");
        replaced = replaced.replace(";", "");
        System.out.println(replaced);
    }

    public static String replaceSemiColons(String string) {
        StringBuffer replaced = new StringBuffer(string);
        Pattern pattern = Pattern.compile(";;+");
        Matcher matcher = pattern.matcher(replaced.toString());
        while(matcher.find()){
            replaced.replace(matcher.start(), matcher.end(), new String(new char[matcher.end() - matcher.start() - 1]).replace("\0", "0"));
            matcher = pattern.matcher(replaced.toString());
        }
        return replaced.toString();
    }
}

如果有人有更好的答案,你应该接受。

使用一个示例系统。out.println;;;;;;。代替0; 将生成此内容的正则表达式,以匹配两次出现的分号5;4.4.4.4.3.1.5.4.5.3.5.5.5.3.5我写得很好,你希望从中得到什么样的结果。5.40;4.40040;301;5.4.503;50505;3000005?谢谢你的帮助