Xóa nhiều dòng trong một file text trong java

(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

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)
1 Like

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ử

1 Like

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.

1 Like

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\]
1 Like

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.

1 Like

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.

1 Like

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

2 Likes

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ỉ?

1 Like
String text = readFileAsString("textfile.txt");
text = text.replace("[Forwarding newSession on session null to remote]", " ");

:slight_smile:

Mình cũng nghĩ dùng cái đó vừa nhanh vừa khỏe :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?