首页 > 解决方案 > 在java中使用一组正则表达式

问题描述

我正在编写一个应该用正则表达式更改文本文件的程序。我有一些命令,它们在例如 NotePad++ 中工作。我现在希望在 java 中使用相同的命令来使其更快。会不会是它保存和读取文件的方式造成的?

private List<String> lines = new ArrayList<String>(10000000);

// read original file to an ArrayList
public String[] readOriginalFile(String filename) throws IOException {
    FileReader fileReader = new FileReader(filename);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String line = null;
    while (((line = bufferedReader.readLine()) != null)){
        lines.add(line);
    }
    bufferedReader.close();
    return lines.toArray(new String[lines.size()]);
}

 public void replaceWordsOne() {
    ArrayList<String> lns = new ArrayList<String>(10000000);
    for (String ln : lines) {
        lns.add(ln.replaceAll("^(\\[.*?\\])\\s+(\\[.*?\\])\\s(\\[.*?\\]\\s){1,}(\\[.*?\\])", "\1\t\2\t\4\t"));
    }
    lines.clear();
    lines = lns;
}

public void writeToNewFileOne(String FinalDirectory) throws IOException {
    FileWriter writer = new FileWriter(FinalDirectory);
    for (String str : lines) {
        writer.write(str +"\n");
    }
    writer.close();
}

标签: javaregex

解决方案


我认为主要原因是这条线:

private List<String> lines = new ArrayList<String>(10000000);

在 java arraylist 中是动态调整大小的数组,这意味着您不需要使用元素初始化列表。

应该是这样的:

private List<String> lines = new ArrayList<String>();

推荐阅读