CharUnicodeInfo Klasa

Definicja

Pobiera informacje o znaku Unicode. Klasa ta nie może być dziedziczona.

public ref class CharUnicodeInfo abstract sealed
public ref class CharUnicodeInfo sealed
public static class CharUnicodeInfo
public sealed class CharUnicodeInfo
type CharUnicodeInfo = class
Public Class CharUnicodeInfo
Public NotInheritable Class CharUnicodeInfo
Dziedziczenie
CharUnicodeInfo

Przykłady

Poniższy przykład kodu przedstawia wartości zwracane przez każdą metodę dla różnych typów znaków.

using namespace System;
using namespace System::Globalization;
void PrintProperties( Char c );
int main()
{
   Console::WriteLine( "                                        c  Num   Dig   Dec   UnicodeCategory" );
   Console::Write( "U+0061 LATIN SMALL LETTER A            " );
   PrintProperties( L'a' );
   Console::Write( "U+0393 GREEK CAPITAL LETTER GAMMA      " );
   PrintProperties( L'\u0393' );
   Console::Write( "U+0039 DIGIT NINE                      " );
   PrintProperties( L'9' );
   Console::Write( "U+00B2 SUPERSCRIPT TWO                 " );
   PrintProperties( L'\u00B2' );
   Console::Write( "U+00BC VULGAR FRACTION ONE QUARTER     " );
   PrintProperties( L'\u00BC' );
   Console::Write( "U+0BEF TAMIL DIGIT NINE                " );
   PrintProperties( L'\u0BEF' );
   Console::Write( "U+0BF0 TAMIL NUMBER TEN                " );
   PrintProperties( L'\u0BF0' );
   Console::Write( "U+0F33 TIBETAN DIGIT HALF ZERO         " );
   PrintProperties( L'\u0F33' );
   Console::Write( "U+2788 CIRCLED SANS-SERIF DIGIT NINE   " );
   PrintProperties( L'\u2788' );
}

void PrintProperties( Char c )
{
   Console::Write( " {0,-3}", c );
   Console::Write( " {0,-5}", CharUnicodeInfo::GetNumericValue( c ) );
   Console::Write( " {0,-5}", CharUnicodeInfo::GetDigitValue( c ) );
   Console::Write( " {0,-5}", CharUnicodeInfo::GetDecimalDigitValue( c ) );
   Console::WriteLine( "{0}", CharUnicodeInfo::GetUnicodeCategory( c ) );
}

/*
This code produces the following output.  Some characters might not display at the console.

                                        c  Num   Dig   Dec   UnicodeCategory
U+0061 LATIN SMALL LETTER A             a   -1    -1    -1   LowercaseLetter
U+0393 GREEK CAPITAL LETTER GAMMA       Γ   -1    -1    -1   UppercaseLetter
U+0039 DIGIT NINE                       9   9     9     9    DecimalDigitNumber
U+00B2 SUPERSCRIPT TWO                  ²   2     2     -1   OtherNumber
U+00BC VULGAR FRACTION ONE QUARTER      ¼   0.25  -1    -1   OtherNumber
U+0BEF TAMIL DIGIT NINE                 ௯   9     9     9    DecimalDigitNumber
U+0BF0 TAMIL NUMBER TEN                 ௰   10    -1    -1   OtherNumber
U+0F33 TIBETAN DIGIT HALF ZERO          ༳   -0.5  -1    -1   OtherNumber
U+2788 CIRCLED SANS-SERIF DIGIT NINE    ➈   9     9     -1   OtherNumber

*/
using System;
using System.Globalization;

public class SamplesCharUnicodeInfo  {

   public static void Main()  {

      Console.WriteLine( "                                        c  Num   Dig   Dec   UnicodeCategory" );

      Console.Write( "U+0061 LATIN SMALL LETTER A            " );
      PrintProperties( 'a' );

      Console.Write( "U+0393 GREEK CAPITAL LETTER GAMMA      " );
      PrintProperties( '\u0393' );

      Console.Write( "U+0039 DIGIT NINE                      " );
      PrintProperties( '9' );

      Console.Write( "U+00B2 SUPERSCRIPT TWO                 " );
      PrintProperties( '\u00B2' );

      Console.Write( "U+00BC VULGAR FRACTION ONE QUARTER     " );
      PrintProperties( '\u00BC' );

      Console.Write( "U+0BEF TAMIL DIGIT NINE                " );
      PrintProperties( '\u0BEF' );

      Console.Write( "U+0BF0 TAMIL NUMBER TEN                " );
      PrintProperties( '\u0BF0' );

      Console.Write( "U+0F33 TIBETAN DIGIT HALF ZERO         " );
      PrintProperties( '\u0F33' );

      Console.Write( "U+2788 CIRCLED SANS-SERIF DIGIT NINE   " );
      PrintProperties( '\u2788' );
   }

   public static void PrintProperties( char c )  {
      Console.Write( " {0,-3}", c );
      Console.Write( " {0,-5}", CharUnicodeInfo.GetNumericValue( c ) );
      Console.Write( " {0,-5}", CharUnicodeInfo.GetDigitValue( c ) );
      Console.Write( " {0,-5}", CharUnicodeInfo.GetDecimalDigitValue( c ) );
      Console.WriteLine( "{0}", CharUnicodeInfo.GetUnicodeCategory( c ) );
   }
}


/*
This code produces the following output.  Some characters might not display at the console.

                                        c  Num   Dig   Dec   UnicodeCategory
U+0061 LATIN SMALL LETTER A             a   -1    -1    -1   LowercaseLetter
U+0393 GREEK CAPITAL LETTER GAMMA       Γ   -1    -1    -1   UppercaseLetter
U+0039 DIGIT NINE                       9   9     9     9    DecimalDigitNumber
U+00B2 SUPERSCRIPT TWO                  ²   2     2     -1   OtherNumber
U+00BC VULGAR FRACTION ONE QUARTER      ¼   0.25  -1    -1   OtherNumber
U+0BEF TAMIL DIGIT NINE                 ௯   9     9     9    DecimalDigitNumber
U+0BF0 TAMIL NUMBER TEN                 ௰   10    -1    -1   OtherNumber
U+0F33 TIBETAN DIGIT HALF ZERO          ༳   -0.5  -1    -1   OtherNumber
U+2788 CIRCLED SANS-SERIF DIGIT NINE    ➈   9     9     -1   OtherNumber

*/
Imports System.Globalization

Public Class SamplesCharUnicodeInfo

   Public Shared Sub Main()

      Console.WriteLine("                                        c  Num   Dig   Dec   UnicodeCategory")

      Console.Write("U+0061 LATIN SMALL LETTER A            ")
      PrintProperties("a"c)

      Console.Write("U+0393 GREEK CAPITAL LETTER GAMMA      ")
      PrintProperties(ChrW(&H0393))

      Console.Write("U+0039 DIGIT NINE                      ")
      PrintProperties("9"c)

      Console.Write("U+00B2 SUPERSCRIPT TWO                 ")
      PrintProperties(ChrW(&H00B2))

      Console.Write("U+00BC VULGAR FRACTION ONE QUARTER     ")
      PrintProperties(ChrW(&H00BC))

      Console.Write("U+0BEF TAMIL DIGIT NINE                ")
      PrintProperties(ChrW(&H0BEF))

      Console.Write("U+0BF0 TAMIL NUMBER TEN                ")
      PrintProperties(ChrW(&H0BF0))

      Console.Write("U+0F33 TIBETAN DIGIT HALF ZERO         ")
      PrintProperties(ChrW(&H0F33))

      Console.Write("U+2788 CIRCLED SANS-SERIF DIGIT NINE   ")
      PrintProperties(ChrW(&H2788))

   End Sub

   Public Shared Sub PrintProperties(c As Char)
      Console.Write(" {0,-3}", c)
      Console.Write(" {0,-5}", CharUnicodeInfo.GetNumericValue(c))
      Console.Write(" {0,-5}", CharUnicodeInfo.GetDigitValue(c))
      Console.Write(" {0,-5}", CharUnicodeInfo.GetDecimalDigitValue(c))
      Console.WriteLine("{0}", CharUnicodeInfo.GetUnicodeCategory(c))
   End Sub

End Class


'This code produces the following output.  Some characters might not display at the console.
'
'                                        c  Num   Dig   Dec   UnicodeCategory
'U+0061 LATIN SMALL LETTER A             a   -1    -1    -1   LowercaseLetter
'U+0393 GREEK CAPITAL LETTER GAMMA       Γ   -1    -1    -1   UppercaseLetter
'U+0039 DIGIT NINE                       9   9     9     9    DecimalDigitNumber
'U+00B2 SUPERSCRIPT TWO                  ²   2     2     -1   OtherNumber
'U+00BC VULGAR FRACTION ONE QUARTER      ¼   0.25  -1    -1   OtherNumber
'U+0BEF TAMIL DIGIT NINE                 ௯   9     9     9    DecimalDigitNumber
'U+0BF0 TAMIL NUMBER TEN                 ௰   10    -1    -1   OtherNumber
'U+0F33 TIBETAN DIGIT HALF ZERO          ༳   -0.5  -1    -1   OtherNumber
'U+2788 CIRCLED SANS-SERIF DIGIT NINE    ➈   9     9     -1   OtherNumber

Uwagi

Standard Unicode definiuje szereg kategorii znaków Unicode. Na przykład znak może być kategoryzowany jako wielka litera, mała litera, cyfra dziesiętna, cyfra dziesiętna, numer litery, separator akapitu, symbol matematyczny lub symbol waluty. Aplikacja może używać kategorii znaków do zarządzania operacjami opartymi na ciągach, takimi jak analizowanie lub wyodrębnianie podciągów za pomocą wyrażeń regularnych. Wyliczenie UnicodeCategory definiuje możliwe kategorie znaków.

CharUnicodeInfo Użyj klasy , aby uzyskać UnicodeCategory wartość dla określonego znaku. Klasa CharUnicodeInfo definiuje metody, które zwracają następujące wartości znaków Unicode:

  • Określona kategoria, do której należy znak lub para zastępcza. Zwracana wartość jest elementem członkowskim UnicodeCategory wyliczenia.

  • Wartość liczbowa. Dotyczy tylko znaków liczbowych, w tym ułamków, indeksów dolnych, indeksów dolnych, liczb rzymskich, liczników walutowych, otaczających cyfr i cyfr specyficznych dla skryptu.

  • Wartość cyfry. Dotyczy znaków liczbowych, które mogą być łączone z innymi znakami liczbowymi, aby reprezentować liczbę całkowitą w systemie numerowania.

  • Wartość cyfry dziesiętnej. Dotyczy tylko znaków reprezentujących cyfry dziesiętne w systemie dziesiętnych (base 10). Cyfra dziesiętna może być jedną z dziesięciu cyfr z zakresu od zera do dziewięciu. Te znaki są elementami UnicodeCategory.DecimalDigitNumber członkowskimi kategorii.

Ponadto CharUnicodeInfo klasa jest używana wewnętrznie przez wiele innych typów i metod platformy .NET, które opierają się na klasyfikacji znaków. Są one następujące:

  • Klasa StringInfo , która współpracuje z elementami tekstowymi zamiast pojedynczych znaków w ciągu.

  • Przeciążenia Char.GetUnicodeCategory metody, które określają kategorię, do której należy znak lub para zastępcza.

  • Klasy znaków rozpoznawane przez Regex, . Aparat wyrażeń regularnych platformy NET.

W przypadku korzystania z tej klasy w aplikacjach należy pamiętać o następujących zagadnieniach programistycznych dotyczących używania Char typu. Typ może być trudny do użycia, a ciągi są zwykle preferowane do reprezentowania zawartości językowej.

  • Char Obiekt nie zawsze odpowiada pojedynczemu znakowi. Char Chociaż typ reprezentuje pojedynczą wartość 16-bitową, niektóre znaki (takie jak klastry grafu i pary zastępcze) składają się z co najmniej dwóch jednostek kodu UTF-16. Aby uzyskać więcej informacji, zobacz "Obiekty char i znaki Unicode" w String klasie .

  • Pojęcie "charakteru" jest również elastyczne. Znak jest często uważany za glif, ale wiele glifów wymaga wielu punktów kodu. Na przykład ä może być reprezentowana przez dwa punkty kodu ("a" plus U+0308, czyli połączenie diaerezy) lub przez pojedynczy punkt kodu ("ä" lub U+00A4). Niektóre języki mają wiele liter, znaków i symboli, które wymagają wielu punktów kodu, co może powodować zamieszanie w reprezentacji zawartości językowej. Na przykład istnieje ΰ (U+03B0, grecki mały list upsilon z dialytika i tonos), ale nie ma równoważnej litery wielkiej. Wielkie litery takiej wartości po prostu pobierają oryginalną wartość.

Uwagi dotyczące wywoływania

Rozpoznane znaki i określone kategorie, do których należą, są definiowane przez standard Unicode i mogą zmieniać się z jednej wersji standardu Unicode na inną. Kategoryzacja znaków w konkretnej wersji .NET Framework jest oparta na jednej wersji standardu Unicode, niezależnie od podstawowego systemu operacyjnego, na którym jest uruchomiona .NET Framework. W poniższej tabeli wymieniono wersje .NET Framework od .NET Framework 4 oraz wersje standardu Unicode używane do klasyfikowania znaków.

Wersja programu .NET Framework Wersja standardowa Unicode
Program .NET Framework 4 5.0.0
.NET Framework 4.5 5.0.0
.NET Framework 4.5.1 5.0.0
.NET Framework 4.5.2 5.0.0
Program .NET Framework 4.6 6.3.0
.NET Framework 4.6.1 6.3.0
.NET Framework 4.6.2 8.0.0

Każda wersja standardu Unicode zawiera informacje o zmianach w bazie danych znaków Unicode od poprzedniej wersji. Baza danych znaków Unicode jest używana przez klasę CharUnicodeInfo do kategoryzowania znaków.

Metody

GetDecimalDigitValue(Char)

Pobiera wartość cyfry dziesiętnej określonego znaku liczbowego.

GetDecimalDigitValue(String, Int32)

Pobiera wartość cyfry dziesiętnej znaku liczbowego w określonym indeksie określonego ciągu.

GetDigitValue(Char)

Pobiera wartość cyfry określonego znaku liczbowego.

GetDigitValue(String, Int32)

Pobiera wartość cyfry znaku liczbowego w określonym indeksie określonego ciągu.

GetNumericValue(Char)

Pobiera wartość liczbową skojarzona z określonym znakiem.

GetNumericValue(String, Int32)

Pobiera wartość liczbową skojarzona z znakiem w określonym indeksie określonego ciągu.

GetUnicodeCategory(Char)

Pobiera kategorię Unicode określonego znaku.

GetUnicodeCategory(Int32)

Pobiera kategorię Unicode określonego znaku.

GetUnicodeCategory(String, Int32)

Pobiera kategorię Unicode znaku w określonym indeksie określonego ciągu.

Dotyczy

Zobacz też