我的输入:
1. end
2. end of the day or end of the week
3. endline
4. something
5. "something" end
根据上述讨论,如果我尝试使用此代码片段替换单个字符串,它会成功从该行中删除适当的单词
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");
}
}
}
我的输出如果我使用上面的代码片段:(也是我的预期输出)
1.
2. of the day or of the week
3. endline
4. something
5. "something"
但是,当我包含更多要删除的单词时,并且为此目的,当我使用 Set 时,我使用以下代码片段:
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
你们能帮我解决这个问题吗?
单击此处关注该主题 https://stackoverflow.com/questions/43832915/how-to-remove-a-particular-string-in-a-text-file-using-java