Problema com o snippet abaixo no regex de correspondências de limite (\ b)
Minha entrada:
1. end
2. end of the day or end of the week
3. endline
4. something
5. "something" end
Com base nas discussões acima, se eu tentar substituir uma única sequência usando esse trecho, ela removerá as palavras apropriadas da linha com êxito
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");
}
}
}
Minha saída Se eu usar o snippet acima: (Também minha saída esperada)
1.
2. of the day or of the week
3. endline
4. something
5. "something"
Mas quando incluo mais palavras para excluir e, para esse propósito, quando uso Set, uso o trecho de código abaixo:
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");
}
}
Recebo minha saída como: (Ele apenas remove o espaço)
1. end
2. endofthedayorendoftheweek
3. endline
4. something
5. "something" end
Vocês podem me ajudar nisso?