Xóa Dòng Trống
Xóa dòng trống và dòng trùng lặp khỏi văn bản, mã nguồn, log, danh sách trong một lần. Tùy chọn sắp xếp và đổi chữ hoa thường. Chạy trên trình duyệt.
Về Công Cụ Xóa Dòng Trống
Xóa Dòng Trống là công cụ dọn dẹp văn bản chuyên dụng, quét đầu vào từng dòng và loại bỏ mọi dòng không chứa ký tự nhìn thấy được. Định nghĩa được dùng là chặt chẽ và khớp với mong đợi của hầu hết lập trình viên: một dòng là trống nếu sau khi qua String.prototype.trim() của JavaScript có độ dài bằng 0 — nghĩa là các dòng chỉ chứa khoảng trắng, tab (\t), khoảng trắng không ngắt (\u00A0), hoặc bất kỳ khoảng trắng Unicode nào khác cũng bị loại bỏ. Công cụ giữ nguyên thứ tự ban đầu của các dòng còn lại và nội dung chính xác bên trong từng dòng kể cả khoảng trắng đầu và cuối trong dòng đó (chỉ những dòng hoàn toàn trống mới bị loại). Có ba bước hậu xử lý tùy chọn: sắp xếp theo bảng chữ cái (A-Z tăng dần), sắp xếp ngược (Z-A giảm dần, hữu ích cho số phiên bản hoặc ngày tháng), và chuyển đổi chữ hoa/thường (VIẾT HOA, viết thường, hoặc giữ nguyên). Quy trình phổ biến: dọn mã sao chép từ PDF hoặc Stack Overflow có dấu xuống dòng kép, cô đặc file log để grep, loại bỏ các dòng trống thừa mà xuất CSV của Excel đôi khi chèn vào, và làm gọn chữ ký email hoặc bản nháp markdown trước khi xuất bản.
Cái gì được tính là 'dòng trống' — chỉ dòng hoàn toàn rỗng hay cả dòng chỉ có khoảng trắng?
Cả hai. Công cụ áp dụng String.trim() cho mỗi dòng trước khi kiểm tra độ dài, nên dòng chỉ chứa khoảng trắng, tab, nhiều khoảng trắng không ngắt (lỗi thường gặp khi dán từ Word hoặc Google Docs, U+00A0), khoảng trắng độ rộng 0 (U+200B), hoặc tổ hợp khoảng trắng Unicode nào cũng bị loại như dòng '\n\n' thực sự rỗng. Nếu cần giữ dòng chỉ có khoảng trắng (ví dụ giữ thụt lề trong block code), copy vào trình soạn thảo text thuần trước và tự xóa '\n\n' theo nghĩa đen.
Tại sao tốt hơn dùng regex find-and-replace với \n\n+?
Ba lý do. Một, gộp \n\n+ thành \n bằng regex để lại một dòng trống mỗi cụm — công cụ này loại bỏ hoàn toàn. Hai, regex bỏ sót các dòng chỉ có khoảng trắng trừ khi viết pattern phức tạp hơn như /^\s*$\n/gm mà không phải ai cũng biết. Ba, công cụ này cung cấp sắp xếp và đổi chữ hoa/thường trong một lần chạy, không phải xâu chuỗi nhiều thao tác. Hiệu năng tương đương (quét O(n) theo dòng), không có hình phạt tốc độ cho sự tiện lợi.
Có giữ nguyên thụt lề, tab và khoảng trắng cuối trong dòng không trống không?
Có. Chỉ dòng hoàn toàn trống hoặc chỉ có khoảng trắng mới bị xóa. Dòng như ' return value' giữ bốn khoảng trắng đầu; dòng như 'hello \t' giữ khoảng trắng và tab cuối. Thụt lề quan trọng trong Python, YAML và Makefile, nên việc bảo toàn này là có chủ đích. Nếu bạn muốn cắt cả khoảng trắng cuối của các dòng giữ lại, chạy đầu ra qua công cụ Làm Sạch Văn Bản sau.
Tùy chọn 'Sắp xếp kết quả' thực ra sắp xếp theo gì?
Mặc định là sắp xếp bảng chữ cái có nhận biết ngôn ngữ qua String.prototype.localeCompare(), nên các ký tự có dấu (à, ả, ã, á, ạ, ç, ñ) sắp xếp ở vị trí tự nhiên trong bảng chữ cái thay vì đứng sau Z. Số sắp xếp theo từ điển (nên '10' đứng trước '2') trừ khi bạn có chuỗi số — dùng công cụ Sắp Xếp Dòng chuyên dụng có chế độ 'Tự nhiên' cho sắp xếp số tự nhiên. Sắp xếp ngược chỉ gọi Array.reverse() sau khi sắp xếp.

Có giới hạn kích thước đầu vào tối đa và hỗ trợ file lớn không?
Không có giới hạn cứng. Công cụ xử lý hơn 1 triệu dòng mượt mà vì cài đặt là một Array.filter() duy nhất với String.trim() — thời gian O(n) và bộ nhớ O(n). Tab trình duyệt thường cho phép nội dung textarea đến ~50 MB trước khi hiệu năng dán giảm. Với file log nhiều gigabyte dùng công cụ Unix: `grep -v '^[[:space:]]*$' file.log` loại bỏ dòng trống và chỉ có khoảng trắng, chạy stream không tải toàn file vào bộ nhớ.
Nó có loại bỏ dòng trống lặp nhưng giữ một dấu phân cách giữa các đoạn không?
Mọi dòng trống đều bị xóa hoàn toàn — công cụ không giữ lại một dòng trống làm dấu phân cách. Nhưng giờ nó cũng xóa các dòng nội dung trùng lặp: bật 'Xóa dòng trùng lặp' để loại bỏ các dòng lặp lại, giữ lần xuất hiện đầu tiên (thứ tự được bảo toàn). Nếu thay vào đó bạn muốn gộp nhiều dòng trống thành một (giữ phân tách đoạn trong markdown hoặc văn xuôi), dùng công cụ Thay Thế Từ với regex bật: tìm /\n\s*\n\s*\n+/g và thay bằng '\n\n'.
Làm sao xóa dòng trống VÀ dòng trùng lặp khỏi danh sách cùng lúc?
Bật 'Xóa dòng trùng lặp'. Công cụ trước tiên loại bỏ mọi dòng trống hoặc chỉ có khoảng trắng, sau đó loại bỏ các dòng lặp lại, giữ lần xuất hiện đầu tiên và bảo toàn thứ tự — đúng những gì bạn cần khi dọn danh sách từ khóa, file xuất email/CSV, kết quả grep log, hay danh sách gửi thư. Bật tùy chọn con lồng nhau 'Không phân biệt chữ hoa/thường' để coi 'Gmail.com' và 'gmail.com' (hoặc 'Apple' và 'apple') là cùng một dòng nên chỉ một dòng còn lại. Khử trùng lặp là tra cứu Set O(n), nên vẫn nhanh ngay cả với danh sách hàng triệu dòng, và chạy trước bất kỳ thao tác sắp xếp hay đổi chữ hoa/thường nào bạn chọn.
Công cụ có gửi văn bản của tôi đi đâu không?
Không. Bộ lọc chạy trong JavaScript trình duyệt trên giá trị textarea, không có fetch() đến backend, không có analytics chứa nội dung. Mở tab Network của DevTools và nhấp Xóa — bạn sẽ thấy 0 request ra ngoài. Điều này khiến công cụ an toàn để làm sạch dữ liệu bảo mật như API key, danh sách nhân viên, dữ liệu khách hàng, hay đoạn mã độc quyền mà không lo rủi ro tuân thủ.
