Char::GetUnicodeCategory Method (String^, Int32)


Categorizes the character at the specified position in a specified string into a group identified by one of the UnicodeCategory values.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

static UnicodeCategory GetUnicodeCategory(
	String^ s,
	int index


Type: System::String^

A String.

Type: System::Int32

The character position in s.

Return Value

Type: System.Globalization::UnicodeCategory

A UnicodeCategory enumerated constant that identifies the group that contains the character at position index in s.

Exception Condition

s is null.


index is less than zero or greater than the last position in s.

Character positions in a string are indexed starting from zero.

The Char::GetUnicodeCategorymethod does not always return the same UnicodeCategory value as the CharUnicodeInfo::GetUnicodeCategory(String^, Int32) method when it is passed a particular character as a parameter. The CharUnicodeInfo::GetUnicodeCategory(String^, Int32) method is designed to reflect the current version of the Unicode standard. In contrast, although the Char::GetUnicodeCategory method usually reflects the current version of the Unicode standard, it may return a character's category based on a previous version of the standard or it may return a category that differs from the current standard in order to preserve backward compatibility. As a result, we recommend that you use the CharUnicodeInfo::GetUnicodeCategory(Char) method instead of Char::GetUnicodeCategory(String^, Int32).

Starting with the .NET Framework 4.6.2, Unicode characters are classified based on The Unix Standard, Version 8.0.0. In versions of the .NET Framework from the .NET Framework 4 to the .NET Framework 4.6.1, they are classified based on The Unix Standard, Version 6.3.0.

The following example demonstrates GetUnicodeCategory.

using namespace System;
int main()
   char ch2 = '2';
   String^ str = "Upper Case";
   Console::WriteLine( Char::GetUnicodeCategory( 'a' ).ToString() ); // Output: S"LowercaseLetter"
   Console::WriteLine( Char::GetUnicodeCategory( ch2 ).ToString() ); // Output: S"DecimalDigitNumber"
   Console::WriteLine( Char::GetUnicodeCategory( str, 6 ).ToString() ); // Output: S"UppercaseLetter"

.NET Framework
Available since 1.1
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top