Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Char.IsSurrogatePair(String, Int32) 메서드 – 서로게이트 쌍 확인 방법

C#의 Char.IsSurrogatePair() 메서드는 문자열 내 지정된 위치에 있는 두 개의 인접한 Char 객체가 유효한 서로게이트 쌍(surrogate pair)을 형성하는지 여부를 확인하는 데 사용됩니다.

서로게이트 쌍이란 UTF-16 인코딩에서 기본 다국어 평면(BMP) 밖의 문자를 표현하기 위해 상위 서로게이트(High Surrogate, U+D800~U+DBFF)와 하위 서로게이트(Low Surrogate, U+DC00~U+DFFF)를 연속으로 배치한 것을 말합니다.

구문

메서드의 구문은 다음과 같습니다.

public static bool IsSurrogatePair (string str, int index);

매개변수

  • str : 서로게이트 쌍 여부를 확인할 대상 문자열입니다.
  • index : str 내에서 평가할 문자 쌍의 시작 위치(인덱스)입니다.

지정된 위치의 문자와 그다음 문자가 함께 유효한 서로게이트 쌍을 이루면 true, 그렇지 않으면 false를 반환합니다.

예제 1

첫 번째 예제를 통해 Char.IsSurrogatePair() 메서드의 사용법을 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      string str = new String(new char[] { 'k', 'm', 'g', 't', '\uD800' });
      bool res = Char.IsSurrogatePair(str, 4);
      if (res)
         Console.WriteLine("Contains Surrogate pair!");
      else
         Console.WriteLine("Does not contain Surrogate pair!");
   }
}

출력 결과

Does not contain Surrogate pair!

이 예제에서 인덱스 4 위치에는 상위 서로게이트(\uD800)만 존재하고 그 뒤에 하위 서로게이트가 없습니다. 따라서 유효한 서로게이트 쌍을 형성하지 못해 false가 반환됩니다.

예제 2

이번에는 서로게이트 쌍이 실제로 존재하는 경우를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      string str = new String(new char[] { 'k','l','a', '\uD800', '\uDC00' });
      bool res = Char.IsSurrogatePair(str, 3);
      if (res)
         Console.WriteLine("Contains Surrogate pair!");
      else
         Console.WriteLine("Does not contain Surrogate pair!");
   }
}

출력 결과

Contains Surrogate pair!

이 예제에서는 인덱스 3 위치의 상위 서로게이트(\uD800) 바로 다음에 하위 서로게이트(\uDC00)가 연속해서 위치하므로, 두 문자가 유효한 서로게이트 쌍을 형성하여 true가 반환됩니다.

정리

Char.IsSurrogatePair(String, Int32) 메서드는 유니코드 보조 문자(예: 이모지, 희귀 한자 등)를 다룰 때 문자열을 안전하게 처리하기 위한 필수 도구입니다. 특히 문자열을 자르거나 순회할 때 서로게이트 쌍 중간에서 잘리지 않도록 검증하는 용도로 유용하게 활용할 수 있습니다.