【发布时间】:2018-05-23 09:53:18
【问题描述】:
我想首先从文件中读取行,将文本重写到另一个文件
File dir = new File("C:/Users/PC/workspace/uplo/");
我得到的文件:
String source = dir.getCanonicalPath() + File.separator + "Output.txt";
我要写入的文件:
String dest = dir.getCanonicalPath() + File.separator + "Final.txt";
File fin = new File(source);
FileInputStream fis = new FileInputStream(fin);
BufferedReader in = new BufferedReader(new InputStreamReader(fis, "UTF-8"));
OutputStreamWriter fstream = new OutputStreamWriter(new FileOutputStream(dest, true), "UTF-8");
BufferedWriter out = new BufferedWriter(fstream);
循环将内容重写到新的 Final.txt 文件:
String aLine = null;
while ((aLine = in.readLine()) != null) {
我想用这个循环从文件中删除重复项,但不幸的是我不知道该怎么做......
String regex = "\\b(\\w+)(\\s+\\1\\b)+";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(aLine);
while (m.find()) {
aLine = aLine.replaceAll(m.group(), m.group(1));
}
out.write(aLine);
out.newLine();
}
in.close();
out.close();
有人可以帮我解决这个问题吗?我正在做我的家庭作业,我不能把它合并在一起:)
例如我想重写文本:
Hello hello hello my name name Name is Arthur and I live in in Lithuania.
收件人:
Hello my name is Arthur and I live in Lithuania.
【问题讨论】:
-
您想逐行删除重复项,或者这也适用于行之间的重复项,例如
"Hello!\n"Hello!"? -
老实说,我不知道是什么问题。您似乎拥有一切,而且对我来说似乎工作正常。您究竟在哪里遇到了麻烦?
-
@EdwinDalorzo 也行间
-
@EdwinDalorzo 我得到的文本与原始文本相同,程序不会删除重复项
-
我刚试过你的程序,它对我来说很好用。正则表达式可能会有所改进,因为它会因某些带有撇号的单词(例如“不要”)而失败,但除此之外它对我来说很好。
标签: java regex file while-loop cycle