Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การตรวจสอบว่าตัวอักษรมีรหัส Surrogate หรือไม่ใน C#

ภาพรวม

Char.IsSurrogate(string, int index) ตรวจสอบว่าตัวอักษรที่ตำแหน่ง index ในสตริงเป็น surrogate code unit (high/low surrogate สำหรับ UTF-16) หรือไม่

ตัวอย่างที่ 1: มี surrogate (\uD800)

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("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

ผลลัพธ์

Contains Surrogate value!

ตัวอย่างที่ 2: ไม่มี 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("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

ผลลัพธ์

Does not contain Surrogate value!

สรุป

  • Surrogate ใช้ใน UTF-16 แทนตัวอักษรนอก Basic Multilingual Plane (BMP)
  • Char.IsSurrogate ตรวจสอบได้ทั้ง high surrogate (U+D800..U+DBFF) และ low surrogate (U+DC00..U+DFFF)
  • ใช้ Char.IsHighSurrogate / Char.IsLowSurrogate แยกประเภทได้