Chuỗi “a␣␣b⇥c␣” dài 7 ký tự nhưng có tới 4 ký tự trắng, trong đó 2 là thừa: công cụ đếm khoảng trắng tách riêng dấu cách, tab, xuống dòng, dấu cách không ngắt (NBSP) và chỉ ra chỗ thừa. Khung xem trước vẽ từng khoảng trắng thành ký hiệu nhìn thấy được, tô đỏ phần nên xoá. Mọi phép đếm chạy trên trình duyệt, không lưu dữ liệu.
Cách đếm khoảng trắng từng loại
Mỗi loại ký tự trắng được đếm riêng, vì dấu cách thường, tab và NBSP trông giống nhau trên màn hình nhưng máy tính coi là ba ký tự khác nhau.
- Chuẩn hoá văn bản về NFC, tách thành các dòng.
- Đếm dấu cách thường, tab, số lần xuống dòng (cặp CR LF tính 1), NBSP cùng hai biến thể hẹp của nó, và các khoảng trắng Unicode khác như em space, thin space, ideographic space.
- Đếm cụm dấu cách đôi: mỗi chuỗi từ 2 dấu cách liền nhau trở lên tính 1 cụm.
- Đếm số dòng bắt đầu bằng khoảng trắng và số dòng kết thúc bằng khoảng trắng.
- Tính ký tự trắng thừa: gộp mọi khoảng trắng liên tiếp trong dòng thành 1 dấu cách, bỏ khoảng trắng đầu và cuối dòng, rồi lấy số ký tự trước trừ số ký tự sau.
Ô kết quả gồm dấu cách, tab, xuống dòng, NBSP, cụm dấu cách đôi và ký tự trắng thừa; ba ô sau chuyển màu cảnh báo khi khác 0. Dòng phụ cho số dòng có khoảng trắng đầu dòng, cuối dòng, số khoảng trắng Unicode lạ nếu có, và tổng ký tự trắng. Khung xem trước dùng · cho dấu cách, → cho tab, ⍽ cho NBSP, ↵ cho xuống dòng. Nút “Xoá khoảng trắng thừa” mở công cụ xoá cùng tên. Cách site đếm ký tự và khoảng trắng được ghi ở trang phương pháp đếm.
Ví dụ: mã khách hàng dán từ Excel không khớp
Một nhân viên kế toán dán ba mã khách hàng từ file Excel của đối tác vào công cụ đếm khoảng trắng, vì hàm dò tìm trả về lỗi dù mắt nhìn thấy mã giống hệt.
| Dòng | Nội dung (· dấu cách, ⍽ NBSP) | Vấn đề |
|---|---|---|
| 1 | KH⍽001 | NBSP thay cho dấu cách thường |
| 2 | KH·002· | dấu cách cuối dòng |
| 3 | ·KH··003 | dấu cách đầu dòng, cụm dấu cách đôi |
Kết quả: 5 dấu cách, 1 NBSP, 2 xuống dòng, 1 cụm dấu cách đôi, 1 dòng có khoảng trắng đầu dòng, 1 dòng có khoảng trắng cuối dòng, tổng 8 ký tự trắng. Văn bản dài 23 ký tự, dọn xong còn 20, tức 3 ký tự thừa. Cả ba mã đều không khớp với mã tương ứng trong hệ thống, mỗi mã vì một lý do.
Chi tiết đáng nhớ nhất nằm ở dòng 1. Hàm TRIM của Excel chỉ xoá dấu cách mã 32, không đụng tới NBSP mã 160, nên chạy TRIM xong mã vẫn lệch; số NBSP ở đây khác 0 là dấu hiệu phải thay NBSP trước.
Hai phép đo trong bộ kiểm thử: chuỗi “a␣␣b⇥c␣” cho 3 dấu cách, 1 tab, 1 cụm dấu cách đôi, 1 dòng có dấu cách cuối, 0 NBSP, 2 ký tự thừa (7 còn 5); Mẫu B của site có 23 dấu cách, 2 xuống dòng và 0 ký tự thừa.
Trường hợp đặc biệt khi đếm khoảng trắng
Bốn trường hợp sau hay làm người dùng thắc mắc vì con số không như dự đoán.
- Tab đứng một mình không bị tính thừa, vì khi dọn nó chỉ đổi thành một dấu cách, số ký tự không giảm. Tab cạnh dấu cách thì phần dư mới là thừa.
- Dòng chỉ gồm khoảng trắng: toàn bộ ký tự trên dòng đó tính thừa, nhưng dòng không bị xoá khỏi văn bản.
- Zero-width space không được đếm ở đây vì Unicode không xếp nó vào nhóm khoảng trắng. Ký tự này vẫn làm lệch tìm kiếm; dùng phát hiện ký tự ẩn để tìm.
- Cụm dấu cách đôi chỉ tính với dấu cách thường; một dấu cách cạnh một NBSP không thành cụm đôi nhưng vẫn góp 1 ký tự thừa.
NBSP đến từ đâu
NBSP thường lẫn vào khi copy từ trang web, email định dạng HTML, Word và bảng tính xuất từ phần mềm kế toán hay hệ thống quản lý.
Trong HTML, NBSP là thực thể , dùng để giữ hai chữ không bị ngắt dòng, như giữa số và đơn vị. Trong Word, tổ hợp Ctrl+Shift+Space cũng chèn đúng ký tự này. Nhìn bằng mắt không phân biệt được, nên tôi coi ô NBSP là ô nên nhìn đầu tiên mỗi khi dữ liệu dán vào không khớp mà không rõ vì sao.
Công cụ liên quan
- Xoá khoảng trắng thừa đổi tab, NBSP thành dấu cách, gộp dấu cách và cắt đầu, cuối dòng sau khi bạn đã biết thừa bao nhiêu.
- Phân loại ký tự đếm chữ hoa, chữ thường, chữ số, dấu câu cùng khoảng trắng trong một bảng.
- Đếm ký tự online cho số ký tự có và không dấu cách khi cần so với giới hạn một ô nhập.
- Nhóm đếm từ và ký tự gom các công cụ đo văn bản tiếng Việt khác.
Câu hỏi thường gặp
NBSP là gì và vì sao nó làm tìm kiếm không khớp?
NBSP là dấu cách không ngắt, mã U+00A0, trông y hệt dấu cách thường nhưng là một ký tự khác. Khi bạn tìm “KH 001” bằng dấu cách thường, chuỗi “KH” nối NBSP với “001” không khớp. Công cụ đếm khoảng trắng đếm riêng NBSP và vẽ nó thành ⍽ trong khung xem trước để bạn thấy vị trí.
Làm sao biết văn bản có hai dấu cách liền nhau?
Dán văn bản vào ô trên và nhìn ô “cụm dấu cách đôi”. Mỗi chuỗi hai dấu cách trở lên tính một cụm, và trong khung xem trước chúng hiện thành các dấu chấm giữa trên nền đỏ. Word cũng có thể tìm bằng Find với hai dấu cách, nhưng không cho biết tổng số ký tự thừa.
Ký tự trắng thừa được tính như thế nào?
Công cụ thử dọn văn bản: gộp mọi khoảng trắng liên tiếp trong một dòng thành một dấu cách, bỏ khoảng trắng ở đầu và cuối mỗi dòng, giữ nguyên các lần xuống dòng. Số ký tự trước trừ số ký tự sau là số ký tự trắng thừa. Công cụ chỉ đếm, văn bản trong ô không bị sửa.
Xuống dòng có được tính là khoảng trắng không?
Có. Xuống dòng được đếm ở ô riêng và cộng vào tổng ký tự trắng, nhưng không bao giờ bị tính thừa, vì công cụ giữ nguyên cấu trúc dòng khi thử dọn. Muốn gộp các dòng bị ngắt giữa câu, dùng công cụ nối dòng; muốn bỏ dòng trống, dùng công cụ xoá khoảng trắng thừa.
Hàm TRIM trong Excel có xoá được hết khoảng trắng thừa không?
Không hết. TRIM bỏ dấu cách mã 32 ở đầu, cuối và gộp dấu cách giữa các chữ, nhưng không xoá NBSP mã 160 hay tab. Cần thay NBSP bằng dấu cách thường trước, ví dụ dùng SUBSTITUTE với CHAR(160), rồi mới chạy TRIM.
Căn cứ và nguồn
- Unicode Character Database, PropList.txt: danh sách ký tự có thuộc tính White_Space, gồm dấu cách, tab, NBSP, U+2000–U+200A, U+3000.
- TRIM function — Microsoft Support: TRIM chỉ xoá dấu cách mã 32, không xoá dấu cách không ngắt mã 160.
- TCVN 6909:2001, bộ mã ký tự tiếng Việt Unicode dạng dựng sẵn: cơ sở chuẩn hoá NFC trước khi đếm.
Kiểm tra: 16/09/2026. Số ký tự trắng thừa là kết quả thử dọn theo quy tắc của công cụ; phần mềm khác có thể gộp hoặc giữ khoảng trắng theo cách riêng.