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

Chương trình C# viết hoa chữ cái đầu mỗi từ trong câu

Chuyển đổi chuỗi sang dạng Title Case (viết hoa chữ cái đầu mỗi từ, các chữ cái còn lại viết thường).

Mã nguồn (thuật toán thủ công)

using System;

class Demo {
    static string ToTitleCase(string str) {
        char[] val = str.ToCharArray();
        
        for (int i = 0; i < str.Length; i++) {
            // Là ký tự đầu chuỗi HOẶC ký tự sau khoảng trắng
            if ((i == 0 && val[i] != ' ') || 
                (val[i] != ' ' && val[i - 1] == ' ')) {
                
                // Nếu là chữ thường → viết hoa
                if (val[i] >= 'a' && val[i] <= 'z') {
                    val[i] = (char)(val[i] - 'a' + 'A');
                }
            } 
            // Các chữ cái khác (không phải đầu từ) → viết thường
            else if (val[i] >= 'A' && val[i] <= 'Z') {
                val[i] = (char)(val[i] + 'a' - 'A');
            }
        }
        
        return new string(val);
    }
    
    public static void Main() {
        string str = "Welcome to our website!";
        Console.WriteLine(ToTitleCase(str));
    }
}

Kết quả

Welcome To Our Website!

Cách chuẩn .NET: TextInfo.ToTitleCase (khuyên dùng)

using System.Globalization;
using System.Threading;

string str = "welcome to our website!";
var culture = Thread.CurrentThread.CurrentCulture;
string titleCase = culture.TextInfo.ToTitleCase(str);
Console.WriteLine(titleCase); // Welcome To Our Website!

Lưu ý

  • TextInfo.ToTitleCase xử lý tốt Unicode, từ ghép, viết tắt — nhưng KHÔNG chuyển các chữ cái GIA ĐẦU từ thành chữ thường (giữ nguyên nếu đã hoa).
  • Code thủ công chỉ xử lý ASCII A-Z/a-z — không hỗ trợ ký tự có dấu (À, Á, Ạ...).
  • Với tiếng Việt, cần logic phức tạp hơn do từ có thể không tách bằng khoảng trắng.
  • Trong ASP.NET Core, dùng System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase.