用Java代替复杂的字符序列

时间:2017-05-05 02:13:43

标签: java

我的要求是我从一个文件中读取并用0替换文件中两个分号出现的序号(;;)。

这里的问题是,当有两个以上的连续出现时,例如';;;;;;'。

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

样品输入为5; 4 ;;; 4; 4 ;;;; 4 ;;; 3 ;; 1; 5; 4; 5 ;; 3; 5 ;; 5 ;; 5; 3 ;;; ;;;;;;;;; 5;

输出为5 4 0 0 4 4 0 0 0 4 0 0 3 0 1 5 4 5 0 3 5 0 5 0 3 0 0 0 0 0 0 0 0 0 0 0 5

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的

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();
    }
}

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