Sắp Xếp Dòng
Sắp xếp dòng theo bảng chữ cái A-Z, Z-A, theo độ dài, theo số tự nhiên hay xáo trộn. Khử trùng, cắt, phân biệt hoa thường. Miễn phí trên trình duyệt.
Về Công Cụ Sắp Xếp Dòng
Sắp Xếp Dòng là bộ sắp xếp dòng đa chiến lược với sáu chế độ sắp xếp và bốn bước tiền xử lý tùy chọn. Sáu chế độ là: A-Z bảng chữ cái (dùng String.prototype.localeCompare() cho thứ tự bảng chữ cái tự nhiên nhận biết dấu — 'á' sắp xếp giữa 'a' và 'b' thay vì sau 'z'), Z-A đảo ngược, độ dài tăng dần (sắp theo số ký tự qua String.length), độ dài giảm dần, sắp xếp Tự Nhiên (tùy chọn Intl.Collator với numeric:true sắp 'file2' trước 'file10' thay vì sau, khớp với cách Windows Explorer và trình quản lý file hiện đại sắp xếp), và Xáo Trộn ngẫu nhiên (thuật toán Fisher-Yates dùng Math.random() cho hoán vị không thiên vị). Tiền xử lý tùy chọn áp trước khi sắp: Xóa Khoảng Trắng cắt khoảng trắng đầu/cuối mỗi dòng qua String.trim(), Xóa Dòng Trống bỏ dòng rỗng hay chỉ có khoảng trắng, Xóa Trùng Lặp giữ chỉ lần xuất hiện đầu của mỗi dòng duy nhất, và Phân Biệt Hoa Thường bật/tắt xem 'Táo' và 'táo' có được coi khác không (mặc định tắt, nên chữ hoa được gập). Quy trình điển hình: sắp tên khách hàng chưa sắp xếp với xử lý đúng café và Müller, sắp tên file tự nhiên để v1.10 đến sau v1.9 chứ không phải sau v1.1, ngẫu nhiên hóa danh sách câu hỏi trivia hay bài hát playlist, dựng pipeline khử-trùng-và-sắp cho phân tích log, và sắp theo độ dài để tìm mục dài/ngắn nhất trong dataset.
Sắp xếp Tự Nhiên là gì và tại sao '10' đến sau '2' trong abc nhưng trước trong Tự Nhiên?
Sắp xếp abc so sánh chuỗi từng ký tự: '1' (code point 49) < '2' (code point 50), nên '10' được coi là bắt đầu bằng '1' và sắp trước '2'. Sắp xếp tự nhiên phát hiện chuỗi số nhúng và so sánh như số: trong '10' nó thấy mười, trong '2' nó thấy hai, và 2 < 10, nên '2' đi trước. Đây là điều con người mong đợi cho tên file (file2.txt trước file10.txt), chuỗi phiên bản (v1.9 trước v1.10), và địa chỉ (Phòng 2 trước Phòng 10). Cài qua Intl.Collator với {numeric: true, sensitivity: 'base'}, là chuẩn web hiện đại và xử lý chữ-số trộn lẫn đúng.
Phân biệt hoa thường thực sự hoạt động ra sao — còn ký tự có dấu như 'café' thì sao?
Khi Phân Biệt Hoa Thường TẮT (mặc định), bộ sắp dùng gập case nhận biết ngôn ngữ qua localeCompare với sensitivity: 'base' — nên 'Apple', 'APPLE', và 'apple' đều sắp như nhau, và dấu như 'café' so với 'cafe' cũng gập về cùng khóa. Khi Phân Biệt Hoa Thường BẬT, chữ hoa (code points 65-90) sắp trước chữ thường (97-122), nên 'Zebra' đến trước 'apple'. Cho tiếng Việt có dấu đầy đủ (à, ả, ã, á, ạ) chế độ gập dấu coi tất cả năm biến thể 'a' là tương đương để sắp; chế độ dấu nghiêm (không lộ trong UI) sẽ giữ chúng khác biệt. Để giữ thứ tự dấu tiếng Việt nghiêm, sắp bên ngoài với locale='vi'.
Khác biệt giữa công cụ này và `sort` Unix là gì?
Unix `sort` là tiêu chuẩn vàng CLI và hỗ trợ nhiều flag hơn (--field-separator, --key, --month-of-year, --human-numeric), xử lý file lớn tùy ý qua external merge sort, và nhanh hơn trên đầu vào nhiều gigabyte. Công cụ này cung cấp 80% trường hợp sử dụng phổ biến nhất (abc, đảo ngược, tự nhiên, độ dài, ngẫu nhiên, dedupe) trong UI trình duyệt không cần cài đặt. Cho sắp xếp một lần của danh sách dán từ email hay Excel, trình duyệt nhanh hơn (không cần lưu file). Cho file log 10 GB, dùng `sort` hay `sort -V` (sắp phiên bản, tương tự tự nhiên). Phiên bản trình duyệt cũng nhận biết ngôn ngữ ngay từ đầu — `sort` mặc định là bytewise trừ khi đặt LC_ALL=vi_VN.UTF-8.

Theo thứ tự nào nó áp Cắt, Xóa Trống, Xóa Trùng và sắp xếp thực tế?
Pipeline là: 1) Xóa Khoảng Trắng, 2) Xóa Dòng Trống, 3) Sắp Xếp, 4) Xóa Trùng Lặp. Thứ tự này quan trọng. Cắt trước nghĩa là ' táo' và 'táo' được nhận là cùng sau cắt, nên dedupe có thể tìm thấy. Xóa trống trước khi sắp tránh chúng cụm ở đầu. Dedupe sau sắp đảm bảo trùng liền kề được phát hiện (tương tự `sort -u` Unix hay `sort | uniq`). Nếu muốn giữ trùng nhưng sắp theo độ dài, tắt Xóa Trùng Lặp — thứ tự khác là giống hệt.
Xáo Trộn Ngẫu Nhiên ngẫu nhiên đến mức nào — có an toàn mật mã không?
Nó dùng thuật toán xáo trộn Fisher-Yates với Math.random() làm nguồn ngẫu nhiên. Điều này tạo hoán vị đồng đều không thiên vị (mỗi trong số n! thứ tự có xác suất bằng nhau), về mặt toán học đúng cho xáo trộn thông thường. Tuy nhiên, Math.random() KHÔNG an toàn mật mã — nó là bộ tạo ngẫu nhiên giả định có thể đoán được nếu biết trạng thái nội bộ. Cho xáo trộn playlist, mục dự thi, trivia, hay trò chơi tiệc, hoàn toàn đủ. Cho trường hợp nhạy cảm bảo mật (xổ số, chọn bồi thẩm), dùng crypto.getRandomValues() trong script tùy chỉnh thay vào đó.
Công cụ xử lý đầu vào rất dài ra sao — mở rộng được tới 1 triệu dòng không?
Có, có lưu ý. Array.sort() của JavaScript là O(n log n) trung bình dùng TimSort trong Chrome/Edge/Firefox, nên 1 triệu dòng sắp trong khoảng 1-3 giây trên laptop hiện đại. Textarea trình duyệt trở thành nút cổ chai — dán 50+ MB văn bản có thể làm tê UI. Cho dataset trên 10 MB, ưu tiên `sort -u file.txt > out.txt` Unix chạy stream từ disk và xử lý file lớn tùy ý qua external merge sort. Bộ đếm 'Tổng Số Dòng' cho biết bạn có bao nhiêu dòng trước khi sắp, hữu ích để kiểm tra dán có hoạt động.
Sắp xếp có làm trong trình duyệt và văn bản của tôi có riêng tư không?
Có. Mọi sắp xếp chạy trong JavaScript qua Array.sort(), Intl.Collator, và Fisher-Yates — không fetch() lên server, không analytics chứa nội dung, không ghi localStorage. Mở DevTools Network và nhấp Sắp Xếp để xác minh 0 request ra ngoài. An toàn cho danh sách nhạy cảm như danh sách email khách, danh sách nhân viên, hostname nội bộ, đầu ra trình tạo mật khẩu, hay bất kỳ dữ liệu nào bạn không nên tải lên.
