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

Chương trình C# đếm số từ trong chuỗi

Đếm số từ trong chuỗi bằng cách đếm các ký tự phân cách: khoảng trắng (' '), tab ('\t'), xuống dòng ('\n'). Số từ = số phân cách + 1.

Mã nguồn

using System;

public class Demo {
    public static void Main() {
        string str = "Hello World!";
        int wordCount = 1; // Ít nhất 1 từ nếu chuỗi không rỗng
        
        for (int i = 0; i < str.Length; i++) {
            char c = str[i];
            if (c == ' ' || c == '\n' || c == '\t') {
                wordCount++;
            }
        }
        
        Console.WriteLine("Số từ trong chuỗi = {0}", wordCount);
    }
}

Kết quả

Số từ trong chuỗi = 2

Vấn đề của cách trên

  • Sai khi chuỗi có nhiều khoảng trắng liên tiếp: "Hello World" → đếm 4 từ (sai).
  • Sai khi chuỗi bắt đầu/kết thúc bằng khoảng trắng.
  • Không xử lý các ký tự whitespace khác (\r, \v, non-breaking space...).

Cách chuẩn: String.Split + RemoveEmptyEntries


string str = "Hello   World!  This is   a test.";
string[] words = str.Split(new[] { ' ', '\t', '\n', '\r' }, 
                           StringSplitOptions.RemoveEmptyEntries);
int count = words.Length; // 6

Cách Regex (mạnh nhất)


using System.Text.RegularExpressions;

int count = Regex.Matches(str, @"\S+").Count;
// \S+ = một hoặc nhiều ký tự KHÔNG phải whitespace

So sánh

Phương phápXử lý multi-spaceUnicode whitespaceHiệu năng
Đếm char splitKhôngKhôngNhanh
Split + RemoveEmptyEntriesCóChỉ char chỉ địnhTrung bình
Regex \S+CóCó (tất cả Unicode whitespace)Chậm hơn

Lưu ý

  • Chuỗi rỗng hoặc chỉ whitespace → 0 từ.
  • Dấu chấm, phẩy, ngoặc... được coi là một phần của từ (ví dụ: "Hello," là 1 từ).
  • Tiếng Việt: từ có thể không tách bằng space — cần tokenizer chuyên dụng (VnCoreNLP, Underthesea...).