import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ClearLineNumberUtil {
/** 去除代码文本前的行号
* @throws FileNotFoundException
*/
public void ClearLineNumber() throws FileNotFoundException{
StringBuffer sb = new StringBuffer();
File file = new File("D:\\test.java");
Scanner in = new Scanner(file);
String temp="";
Pattern pattern = Pattern.compile("\\d+\\s");//替换数字开头后接空格的正则式
Matcher matcher=null;
while(in.hasNext()){
temp = in.nextLine();
matcher = pattern.matcher(temp);
while(matcher.find() && isStartWithNumber(temp)){
/* 例如,有字符串 fatcatfatcatfat, 假设既有正则表达式模式为"cat",
第一次匹配后调用 appendReplacement(sb,"dog"),
那么这时 StringBuffer sb 的内容为 fatdog,
也就是 fatcat 中的 cat 被替换为 dog 并且与匹配子串前的内容加到 sb 里,
而第二次匹配后调用 appendReplacement(sb,"dog"),那么 sb 的内容就变为 fatdogfatdog,
如果最后再调用一次 appendTail(sb), 那么 sb 最终的内容将是 fatdogfatdogfat */
matcher.appendReplacement(sb, " ");
}
matcher.appendTail(sb);
sb.append("\n");
}
System.out.println(sb.toString());
try {
FileWriter fw = new FileWriter(file);
fw.write(sb.toString());
fw.flush();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//判断字符串是不是以数字开头
public boolean isStartWithNumber(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher((str.trim()).charAt(0)+"");
if (!isNum.matches()) {
return false;
}
return true;
}
}