我的要求是我从一个文件中读取并用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
答案 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();
}
}
如果有人有更好的答案,你应该接受它。