【发布时间】:2017-05-08 07:14:13
【问题描述】:
我的意见:
1. end
2. end of the day or end of the week
3. endline
4. something
5. "something" end
基于上述讨论,如果我尝试使用这个 sn-p 替换单个字符串,它会成功从该行中删除相应的单词
public class DeleteTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
File file = new File("C:/Java samples/myfile.txt");
File temp = File.createTempFile("myfile1", ".txt", file.getParentFile());
String delete="end";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp)));
for (String line; (line = reader.readLine()) != null;) {
line = line.replaceAll("\\b"+delete+"\\b", "");
writer.println(line);
}
reader.close();
writer.close();
}
catch (Exception e) {
System.out.println("Something went Wrong");
}
}
}
我的输出如果我使用上面的 sn-p:(也是我的预期输出)
1.
2. of the day or of the week
3. endline
4. something
5. "something"
但是当我包含更多要删除的单词时,并且为此我使用 Set 时,我使用以下代码 sn-p:
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
File file = new File("C:/Java samples/myfile.txt");
File temp = File.createTempFile("myfile1", ".txt", file.getParentFile());
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp)));
Set<String> toDelete = new HashSet<>();
toDelete.add("end");
toDelete.add("something");
for (String line; (line = reader.readLine()) != null;) {
line = line.replaceAll("\\b"+toDelete+"\\b", "");
writer.println(line);
}
reader.close();
writer.close();
}
catch (Exception e) {
System.out.println("Something went Wrong");
}
}
我的输出为:(它只是删除了空间)
1. end
2. endofthedayorendoftheweek
3. endline
4. something
5. "something" end
你们能帮我解决这个问题吗?
【问题讨论】:
-
您使用的是 Java 8 还是 Java 7?
-
我使用的是 Java 8