(Q/A about Java )Hi mọi người. Cho mình xin hỏi một chút ảnh dưới là một file text của mình.Hiện tại mình muốn xóa toàn bộ các dòng chứa một chuỗi kí tự “[Forwarding newSession on session null to remote]” rồi ghi vào một file mới thì làm thế nào ạ. Ai biết có thể gợi ý giúp mình được không ạ.Thanks
Xóa nhiều dòng trong một file text trong java
Mình không biết Java, mình chỉ đưa bạn mã giả thôi:
while (s = fi.readline()):
if s không chứa "[Forwarding newSession on session null to remote]":
fo.write(s)
Bạn readLine() để đọc dòng, dùng regex để test chuỗi ký tự, có thì replace bằng ký tự trống, rồi ghi nó vào file mới.
mình thử cách này rồi nhưng không được ban ạ mình dùng !s.matches(regex) nhưng không được
Ko được là sao? Error? no impact?.. Cái này ngắn bạn cho code lên mọi người coi thử
mình hiểu ý bạn nhưng cách của bạn không được bạn ơi . mình không cần replace. mình muốn xóa toàn bộ dòng nào chứa kia tự mình muốn mình hiểu ý của bạn nhưng nếu bạn nhìn ảnh mình chụp bạn sẽ hiểu. mình muốn xóa dòng chứ không phải xóa text
Thế thì bạn thử cách của mình xem. Nhưng bạn cũng cần dùng regex để phát hiện chuỗi bạn muốn ignore.
cách của ban mình thử rồi nha nhưng nó chỉ xóa khi điền text toàn bộ của một dòng thì mới xóa được
ví dụ : abc12345 và abc12346
xóa hết abc1234 thì nó không nhận chỉ nhận xóa abc12345 hoăc abc12346
Bạn đưa regex của bạn lên đây.
[Forwarding newSession on session null to remote]
Phải là
\[Forwarding newSession on session null to remote\]
Sao bạn ko quẳng 2 cái móc đi cho đỡ mệt
Như thế này thì nó gần như ko copy ra đc dòng nào.
mình làm được rồi nhé thanks mọi người
Bạn có thể nói rõ là bạn làm thế nào được không. Vì mình có cách kiểm tra dễ hơn, không phải dùng regex, đó là cứ mỗi dòng đọc lên thì dùng phương thức:
(fi.readLine()).contains("[Forwarding newSession on session null to remote]") trả về true hoặc false
Không biết có đúng ý bạn không.
Thực ra nó cũng quy về regex thôi, nhưng cách của bạn là đơn giản nhất, đỡ phải đau đầu
Mình vào source xem cái phương thức contains có liên quan gì đến regex đâu nhỉ, đơn giản String nó là một mảng char và phương thức này gọi đến phương thức indexOf và lặp trên mảng để tìm xem có khớp không thôi, đâu có gọi gì đến Pattern hay Matcher nhỉ?
String text = readFileAsString("textfile.txt");
text = text.replace("[Forwarding newSession on session null to remote]", " ");
Mình cũng nghĩ dùng cái đó vừa nhanh vừa khỏe