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

C# Char.IsLowSurrogate(String, Int32) 메서드 – 문자열 내 하위 서러게이트 확인하기

C#의 Char.IsLowSurrogate() 메서드는 문자열에서 지정된 위치에 있는 Char 객체가 하위 서러게이트(low surrogate)인지 여부를 판별합니다. 해당 위치의 문자가 유효한 하위 서러게이트이면 true를, 그렇지 않으면 false를 반환합니다.

하위 서러게이트(Low Surrogate)란?

UTF-16 인코딩에서 기본 다국어 평면(BMP) 밖의 유니코드 문자는 상위 서러게이트(U+D800~U+DBFF)와 하위 서러게이트(U+DC00~U+DFFF)가 한 쌍을 이루어 표현됩니다. Char.IsLowSurrogate() 메서드는 지정한 위치의 문자가 이 하위 서러게이트 범위에 속하는지 검사할 때 유용하게 사용됩니다.

구문

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

매개변수

  • str: 검사 대상이 되는 문자열입니다.
  • index: str에서 평가할 문자의 위치(0부터 시작)입니다.

반환값: 지정된 위치의 문자가 유효한 하위 서러게이트이면 true, 아니면 false를 반환합니다.

예제 1: 하위 서러게이트가 있는 경우

다음은 Char.IsLowSurrogate() 메서드를 활용한 예제입니다.

using System;
public class Demo {
   public static void Main(){
      string str = new String(new char[] { 'k', 'm', 'g', 't', 'j', 'p', '\uDC00' });
      bool res = Char.IsLowSurrogate(str, 6);
      if (res)
         Console.WriteLine("Contains Low Surrogate value!");
      else
         Console.WriteLine("Does not contain Low Surrogate value!");
   }
}

출력

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Contains Low Surrogate value!

문자열의 마지막 문자(\uDC00)는 하위 서러게이트에 해당하므로, 인덱스 6을 검사하면 true가 반환됩니다.

예제 2: 하위 서러게이트가 아닌 경우

이번에는 동일한 문자열에서 다른 위치를 검사해 보겠습니다.

using System;
public class Demo {
   public static void Main(){
      string str = new String(new char[] { 'k', 'm', 'g', 't', 'j', 'p', '\uDC00' });
      bool res = Char.IsLowSurrogate(str, 3);
      if (res)
         Console.WriteLine("Contains Low Surrogate value!");
      else
         Console.WriteLine("Does not contain Low Surrogate value!");
   }
}

출력

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Does not contain Low Surrogate value!

인덱스 3에 있는 문자 't'는 일반 문자이므로 false가 반환됩니다. 이처럼 Char.IsLowSurrogate() 메서드를 사용하면 문자열 내 특정 위치의 문자가 하위 서러게이트인지 간단하게 확인할 수 있습니다.