java - 在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();
}
解决方案
我认为主要原因是这条线:
private List<String> lines = new ArrayList<String>(10000000);
在 java arraylist 中是动态调整大小的数组,这意味着您不需要使用元素初始化列表。
应该是这样的:
private List<String> lines = new ArrayList<String>();
推荐阅读
- visual-studio - Visual Studio 代码样式首选项 csharp_prefer_braces 不起作用
- javascript - 当我输入输入元素时代码消失了
- javascript - 为什么我的模拟商店不能在 Jest/Enzyme 上运行?
- java - Java,需要帮助制作一个for循环来制作像带有单个字母的楼梯的图像
- java - Java中的伪随机数与书不匹配
- javascript - ytdl-core 出现“找不到模块”错误
- google-maps - 谷歌地图无法正常打开
- regex - 选择所有以“.”开头的连续行,最后一行除外
- python - 如何在跨度(箭头)内循环抓取数据并将其全部循环到连续页面中?
- grafana - grafana 使用基于指标的普罗米修斯查询定义变量