Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Đếm số từ trong chuỗi JavaScript (Regex)

Đếm từ chính xác cần xử lý: khoảng trắng đầu/cuối, nhiều khoảng trắng liên tiếp, xuống dòng, tab.

Các bước chuẩn hóa

  1. Xóa khoảng trắng đầu/cuối: str.replace(/^\s+|\s+$/g, '') hoặc str.trim().
  2. Thay nhiều khoảng trắng liên tiếp bằng 1: str.replace(/\s+/g, ' ').
  3. Xử lý xuống dòng có khoảng trắng: str.replace(/\n\s+/g, '\n').
  4. Split bằng khoảng trắng và đếm length.

Code hoàn chỉnh (cách gốc)

<script>
  function demTu(str) {
    if (typeof str !== 'string') return 0;
    str = str.trim();                              // B1
    str = str.replace(/\s+/g, ' ');                // B2: nhiều space/tab/newline → 1 space
    if (str === '') return 0;                      // Chuỗi rỗng sau trim
    return str.split(' ').length;                  // B4
  }

  document.write(demTu("   Tutorix is one of the best E-learning   platforms   ")); // 8
</script>

Kết quả

8

Cách hiện đại (ES6+) — Gọn hơn

function demTuModern(str) {
  if (typeof str !== 'string') return 0;
  // match tất cả chuỗi ký tự không phải whitespace
  return (str.match(/\S+/g) || []).length;
}
// \S = non-whitespace, g = global
// match() trả về null nếu không khớp → || [] tránh lỗi

Test

demTuModern("   Hello   world  "); // 2
demTuModern(""); // 0
demTuModern("One\nTwo\tThree"); // 3

So sánh

Phương phápƯu điểmNhược điểm
Split sau replaceDễ hiểu, kiểm soát từng bướcCode dài, nhiều bước
Regex match(/\S+/g)Ngắn, nhanh, chuẩn UnicodeÍt trực quan cho người mới

Lưu ý

  • Từ được định nghĩa là chuỗi ký tự không chứa whitespace.
  • Dấu câu (.,!?) được tính là một phần của từ — nếu cần tách dấu câu, regex phức tạp hơn.
  • Hỗ trợ tiếng Việt: /\S+/g vẫn hoạt động tốt với Unicode.