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

Kiểm tra ký tự có mã surrogate trong C#

Ví dụ 1: Có surrogate

Sử dụng Char.IsSurrogate để kiểm tra:

using System;

public class Demo {
    public static void Main() {
        string str = new String(new char[] { 'k', 'm', 'g', 't', '\uD800' });
        bool res = Char.IsSurrogate(str, 4);
        
        if (res)
            Console.WriteLine("Chứa giá trị Surrogate!");
        else
            Console.WriteLine("Không chứa giá trị Surrogate!");
    }
}

Kết quả

Chứa giá trị Surrogate!

Ví dụ 2: Không có surrogate

using System;

public class Demo {
    public static void Main() {
        string str = new String(new char[] { 'k', 'm', 'g', 't', 'w' });
        bool res = Char.IsSurrogate(str, 4);
        
        if (res)
            Console.WriteLine("Chứa giá trị Surrogate!");
        else
            Console.WriteLine("Không chứa giá trị Surrogate!");
    }
}

Kết quả

Không chứa giá trị Surrogate!

Giải thích: Surrogate code units (U+D800 đến U+DFFF) được dùng trong UTF-16 để biểu diễn ký tự ngoài BMP. Char.IsSurrogate kiểm tra ký tự tại vị trí chỉ định có phải surrogate không.