2009-04-14 25 views

Trả lời

15

Một phương pháp mở rộng đơn giản, mà sẽ tận dụng các chữ cái đầu tiên của một chuỗi. Như Karl đã chỉ ra, điều này giả định rằng chữ cái đầu tiên là chữ cái đúng để thay đổi và do đó không hoàn toàn an toàn về văn hóa.

public static string CapitalizeFirstLetter(this String input) 
{ 
    if (string.IsNullOrEmpty(input)) 
     return input; 

    return input.Substring(0, 1).ToUpper(CultureInfo.CurrentCulture) + 
     input.Substring(1, input.Length - 1); 
} 

Bạn cũng có thể sử dụng System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase. Hàm sẽ chuyển đổi ký tự đầu tiên của mỗi từ thành chữ hoa. Vì vậy, nếu chuỗi đầu vào của bạn là have fun, kết quả sẽ là Have Fun.

public static string CapitalizeFirstLetter(this String input) 
{ 
    if (string.IsNullOrEmpty(input)) 
     return input; 

    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input); 
} 

Xem this question để biết thêm thông tin.

+0

Cảm ơn, tôi không biết tại sao tôi không tìm thấy nó tìm kiếm – juan

+1

này vẫn giả định rằng các chữ cái đầu tiên là một trong những quyền thay đổi. Chưa hoàn toàn an toàn về văn hóa. – Karl

+0

ví dụ đầu tiên sẽ ném một ngoại lệ nếu độ dài chuỗi bằng không. Nên thêm "if (string.IsNullOrEmpty (input)) trả về đầu vào;" ở trên cùng. –

10

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase

Nó có lợi thế là an toàn về văn hóa.

+0

Sau khi đọc các nhận xét trong tài liệu MSDN, nó chỉ ra phương pháp này chỉ thay đổi chữ cái đầu tiên thành chữ hoa bất kể bất kỳ chi tiết văn hóa thực nào. 1 cho chỉ ra phương pháp khuôn khổ tối nghĩa, -1 cho phương pháp được chỉ định là gây hiểu lầm/bị hỏng. – ScottS

+1

Vâng, người lạc quan sẽ nói rằng nếu bạn sử dụng nó ngay bây giờ, nó có thể thực sự hoạt động như mong đợi trong tương lai. Ở mức nào, nó thực hiện chính xác những gì được yêu cầu, và được xây dựng trong khung: P – Chris

0

Hãy thử điều này:

static public string UpperCaseFirstCharacter(this string text) { 
    return Regex.Replace(text, "^[a-z]", m => m.Value.ToUpper()); 
} 
Các vấn đề liên quan