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

Chuyển chuỗi thành ký tự Unicode (Char) trong C#

Mục đích

Phương thức Char.TryParse(string s, out char result) cố gắng chuyển chuỗi thành một ký tự Unicode duy nhất. Trả về true nếu thành công, false nếu chuỗi rỗng, dài hơn 1 ký tự hoặc null.

Ví dụ 1: Chuỗi không hợp lệ ("10")

using System;

public class Demo
{
    public static void Main()
    {
        bool res;
        char ch;

        res = Char.TryParse("10", out ch);
        Console.WriteLine($"TryParse('10'): {res}");
        Console.WriteLine($"Ký tự: '{ch}'");
    }
}

Kết quả

TryParse('10'): False
Ký tự: ''

Ví dụ 2: Chuỗi hợp lệ ("P")

using System;

public class Demo
{
    public static void Main()
    {
        bool res;
        char ch;

        res = Char.TryParse("P", out ch);
        Console.WriteLine($"TryParse('P'): {res}");
        Console.WriteLine($"Ký tự: '{ch}'");
    }
}

Kết quả

TryParse('P'): True
Ký tự: 'P'

So sánh với các phương thức khác

Phương thứcHành viTrả về
Char.Parse(string)Chuyển chuỗi 1 ký tự, ném exception nếu thất bạichar
Char.TryParse(string, out char)An toàn, không ném exceptionbool
string[0] hoặc s[0]Lấy ký tự tại vị trí, không kiểm tra độ dàichar
Convert.ToChar(string)Chuyển đổi, ném exception nếu không phải 1 ký tựchar

Best Practice

  • Luôn dùng TryParse khi nhập liệu từ người dùng/file.
  • Kiểm tra string.Length == 1 trước nếu muốn tránh overhead TryParse.
  • Unicode: Char trong C# là UTF-16 code unit (2 byte), một số ký tự (emoji, chữ Hán ít dùng) cần 2 code unit (surrogate pair) -> dùng Char.ConvertToUtf32.