C#의 Char.IsControl(String, Int32) 메서드는 지정된 문자열에서 특정 위치에 있는 문자가 제어 문자(Control Character)로 분류되는지 여부를 확인하는 데 사용됩니다. 이 메서드는 해당 문자가 제어 문자이면 true, 그렇지 않으면 false를 반환합니다.
구문
public static bool IsControl (string str, int index);
각 매개변수의 의미는 다음과 같습니다.
- str: 검사 대상이 되는 문자열입니다.
- index: str에서 평가할 문자의 위치(인덱스)입니다. 인덱스는 0부터 시작합니다.
참고로, 제어 문자란 줄 바꿈(\n), 탭(\t), 캐리지 리턴(\r)처럼 화면에 표시되지 않고 특수한 기능을 수행하는 유니코드 Control 범주의 문자를 의미합니다.
예제
이제 Char.IsControl(String, Int32) 메서드를 실제로 구현한 예제를 살펴보겠습니다.
using System;
using System.Globalization;
public class Demo {
public static void Main(){
string val = "hjk9878hj";
Console.WriteLine("String = "+val);
UnicodeCategory unicode = Char.GetUnicodeCategory(val, 4);
Console.WriteLine("The value at specific index = "+unicode);
bool res = Char.IsControl(val, 4);
if (res)
Console.WriteLine("Control character found!");
else
Console.WriteLine("Control character isn't there");
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
String = hjk9878hj The value at specific index = DecimalDigitNumber Control character isn't there
예제 해설
위 예제에서는 문자열 "hjk9878hj"의 인덱스 4 위치에 있는 문자를 검사합니다. 인덱스 4에 해당하는 문자는 숫자 8이며, Char.GetUnicodeCategory 메서드의 결과에서 알 수 있듯이 이 문자는 DecimalDigitNumber(10진 숫자) 범주에 속합니다. 따라서 제어 문자가 아니므로 Char.IsControl 메서드는 false를 반환하고, "Control character isn't there"라는 메시지가 출력됩니다.
주의 사항
- ArgumentNullException: str이 null인 경우 발생합니다.
- ArgumentOutOfRangeException: index가 0보다 작거나 str의 길이보다 크거나 같은 경우 발생합니다.
이처럼 Char.IsControl(String, Int32) 메서드를 활용하면 문자열 내 특정 위치에 제어 문자가 포함되어 있는지 손쉽게 판별할 수 있으며, 입력 데이터 유효성 검사나 텍스트 파싱 작업에서 유용하게 사용됩니다.