Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

GetUnicodeCategory 메서드

작성자 : 박종명
최초 작성일 : 2009-06-30 (화요일)
최종 수정일 : 2009-06-30 (화요일)
조회 수 : 3210

하루 한 문법, 그 첫번째 시간입니다

* GetUnicodeCategory

(닷넷에서 문자를 표현하는) Char 구조체에 정의된 static 메서드 입니다

이 메서드는 문자의 범주를 쉽게 알 수 있도록 해 줍니다
범주라는 말이 좀 딱딱하죠? 말 그대로 문자가 어떤 문자에 속하는지 알려 주는 기능이라고 할까요...

1,2,3 .. <- 숫자죠
a,b,c..   <- 영문자죠. 그리고 소문자죠
\a, \t     <- 제어 문자죠.. \a: 비프음, \t :탭 문자

이와같이 문자가 어떤 범주에 속하는지 알려 주는 유용한 메서드 입니다

다음과 같이 간단히 사용 할 수 있습니다

static void Main(string[] args)
{
      char c = 'A';
      Console.WriteLine(Char.GetUnicodeCategory(c)); //결과는 UppercaseLetter 입니다
}

- GetUnicodeCategory 에 대문자 'A'를 입력하니, UppercaseLetter 이라고 결과를 내뱉습니다.

UppercaseLetter 라는 결과는 System.Globalization 네임스페이스에 정의된 UnicodeCategory 라는 enum 값입니다


샘플을 조금 더 확장 해 볼까요?
임의의 문자열이 어떤 문자들로 구성되었는지 알아 보는 예제입니다.

static void Main(string[] args)
{
     string str = "1234abcEFG안녕(+=)";

     Dictionary<System.Globalization.UnicodeCategory, int> dic =
                                                      new Dictionary<System.Globalization.UnicodeCategory, int>();

     for (int i = 0; i < str.Length; i++)
     {
          System.Globalization.UnicodeCategory uc = Char.GetUnicodeCategory(str[i]);

          if (dic.ContainsKey(uc))
          {
              dic[uc]++;
           }
          else
          {
              dic.Add(uc, 1);
           }
      }

     System.Collections.IEnumerator e = dic.GetEnumerator();
     while (e.MoveNext())
     {
          Console.WriteLine(e.Current.ToString());
      }
 }


위 샘플의 결과는 아래와 같습니다

주어진 문자열 '1234abcEFG안녕(+=)' 은
십진수 숫자 4개, 소문자 3개, 대문자3개, 기타문자2개, 여는문자1개, 수학기호2개, 닫는문자1개
라는 것을 알 수 있습니다.

그리고 한가지 더 말씀드리면,
GetUnicodeCategory 메서드가 반환하는 각 범주를 검증할 수 있는 다음과 같은 Boolean 메서드들도 추가로 제공해 주고 있습니다.
Char.IsDigit (10진 숫자 인가?), Char.IsControl(제어문자인가?), Char.IsLower(영소문자인가?) .... 등등


유용하죠 ^^
필요할 때 적절히 사용하세요~~~

= 참고 =
아래 표는 GetUnicodeCategory 메서드의 결과로 반환되는 UnicodeCategory 의 멤버입니다(msdn)

멤버 이름

설명

ClosePunctuation

문자가 괄호, 대괄호 및 중괄호처럼 쌍을 이루는 문장 부호의 닫는 문자임을 나타냅니다. 유니코드 지정 "Pe"(punctuation, close)로 지정됩니다. 값은 21입니다

ConnectorPunctuation

문자가 두 문자를 연결하는 연결 문장 부호임을 나타냅니다. 유니코드 지정 "Pc"(punctuation, connector)로 지정됩니다. 값은 18입니다

Control

문자가 유니코드 값이 U+007F이거나 U+0000부터 U+001F까지 또는 U+0080부터 U+009F까지의 범위에 있는 컨트롤 코드임을 나타냅니다. 유니코드 지정 "Cc"(other, control)로 지정됩니다. 값은 14입니다

CurrencySymbol

문자가 통화 기호임을 나타냅니다. 유니코드 지정 "Sc"(symbol, currency)로 지정됩니다. 값은 26입니다

DashPunctuation

문자가 대시 또는 하이픈임을 나타냅니다. 유니코드 지정 "Pd"(punctuation, dash)로 지정됩니다. 값은 19입니다

DecimalDigitNumber

문자가 0부터 9까지의 범위에 있는 10진수임을 나타냅니다. 유니코드 지정 "Nd"(number, decimal digit)로 지정됩니다. 값은 8입니다

EnclosingMark

문자가 기본 문자를 포함한 모든 이전 문자를 둘러싸는 간격이 없는 조합 문자인 묶기 표시임을 나타냅니다. 유니코드 지정 "Me"(mark, enclosing)로 지정됩니다. 값은 7입니다

FinalQuotePunctuation

문자가 닫는 또는 마지막 문장 부호임을 나타냅니다. 유니코드 지정 "Pf"(punctuation, final quote)로 지정됩니다. 값은 23입니다

Format

문자가 대개 렌더링되지 않고 텍스트 레이아웃이나 텍스트 처리 작업에 영향을 주는 서식 문자임을 나타냅니다. 유니코드 지정 "Cf"(other, format)로 지정됩니다. 값은 15입니다

InitialQuotePunctuation

문자가 여는 또는 시작 문장 부호임을 나타냅니다. 유니코드 지정 "Pi"(punctuation, initial quote)로 지정됩니다. 값은 22입니다

LetterNumber

5에 해당하는 로마자 'V'와 같이 문자가 10진수 대신 문자로 나타낸 숫자임을 나타냅니다. 유니코드 지정 "Nl"(number, letter)로 지정됩니다. 값은 9입니다

LineSeparator

문자가 텍스트 행을 구분하는 데 사용됨을 나타냅니다. 유니코드 지정 "Zl"(separator, line)으로 지정됩니다. 값은 12입니다

LowercaseLetter

문자가 소문자임을 나타냅니다. 유니코드 지정 "Ll"(letter, lowercase)로 지정됩니다. 값은 1입니다

MathSymbol

문자가 '+' 또는 '= '과 같은 수학 기호임을 나타냅니다. 유니코드 지정 "Sm"(symbol, math)으로 지정됩니다. 값은 25입니다

ModifierLetter

문자가 이전 문자를 제한하는 간격이 자유로운 문자인 한정자 문자임을 나타냅니다. 유니코드 지정 "Lm"(letter, modifier)으로 지정됩니다. 값은 3입니다

ModifierSymbol

문자가 주위 문자를 제한하는 한정자 기호임을 나타냅니다. 예를 들어 분수 기호는 이 기호의 왼쪽 숫자가 분자이고, 오른쪽 숫자가 분모임을 나타냅니다. 유니코드 지정 "Sk"(symbol, modifier)로 지정됩니다. 값은 27입니다

NonSpacingMark

문자가 기본 문자를 제한하는 간격이 없는 문자임을 나타냅니다. 유니코드 지정 "Mn"(mark, nonspacing)으로 지정됩니다. 값은 5입니다

OpenPunctuation

문자가 괄호, 대괄호 및 중괄호처럼 쌍을 이루는 문장 부호의 여는 문자임을 나타냅니다. 유니코드 지정 "Ps"(punctuation, open)로 지정됩니다. 값은 20입니다

OtherLetter

문자가 대문자, 소문자, 단어의 첫 글자를 대문자로 하는 문자 또는 한정자 문자가 아닌 문자임을 나타냅니다. 유니코드 지정 "Lo"(letter, other)로 지정됩니다. 값은 4입니다

OtherNotAssigned

문자가 어떠한 유니코드 범주에도 할당되지 않음을 나타냅니다. 유니코드 지정 "Cn"(other, not assigned)으로 지정됩니다. 값은 29입니다

OtherNumber

문자가 분수 1/2처럼 10진수나 문자 숫자가 아닌 숫자임을 나타냅니다. 유니코드 지정 "No"(number, other)로 지정됩니다. 값은 10입니다

OtherPunctuation

문자가 연결 문장 부호, 대시 문장 부호, 여는 문장 부호, 닫는 문장 부호, 처음 따옴표 또는 마지막 따옴표가 아닌 문장 부호임을 나타냅니다. 유니코드 지정 "Po"(punctuation, other)로 지정됩니다. 값은 24입니다

OtherSymbol

문자가 수학 기호, 통화 기호 또는 한정자 기호가 아닌 기호임을 나타냅니다. 유니코드 지정 "So"(symbol, other)로 지정됩니다. 값은 28입니다

ParagraphSeparator

문자가 단락을 구분하는 데 사용됨을 나타냅니다. 유니코드 지정 "Zp"(separator, paragraph)로 지정됩니다. 값은 13입니다

PrivateUse

문자가 유니코드 값이 U+E000부터 U+F8FF까지의 범위에 있는 전용 문자임을 나타냅니다. 유니코드 지정 "Co"(other, private use)로 지정됩니다. 값은 17입니다

SpaceSeparator

문자가 문자 모양은 없지만 제어 문자나 서식 문자가 아닌 공백 문자임을 나타냅니다. 유니코드 지정 "Zs"(separator, space)로 지정됩니다. 값은 11입니다

SpacingCombiningMark

문자가 기본 문자를 제한하는 해당 기본 문자의 문자 모양 너비에 영향을 미치는 간격이 있는 문자임을 지정합니다. 유니코드 지정 "Mc"(mark, spacing combining)로 지정됩니다. 값은 6입니다

Surrogate

문자가 상위 서로게이트이거나 하위 서로게이트임을 나타냅니다. 서로게이트 코드 값은 U+D800부터 U+DFFF까지의 범위에 있습니다. 유니코드 지정 "Cs"(other, surrogate)로 지정됩니다. 값은 16입니다

TitlecaseLetter

문자가 단어의 첫 글자를 대문자로 하는 문자임을 나타냅니다. 유니코드 지정 "Lt"(letter, titlecase)로 지정됩니다. 값은 2입니다

UppercaseLetter

문자가 대문자임을 나타냅니다. 유니코드 지정 "Lu"(letter, uppercase)로 지정됩니다. 값은 0입니다

 

이름
비밀번호
홈페이지
PE <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요