CharUnicodeInfo Třída

Definice

Načte informace o znaku Unicode. Tato třída se nemůže dědit.

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
Dědičnost
CharUnicodeInfo

Příklady

Následující příklad kódu ukazuje hodnoty vrácené jednotlivými metodami pro různé typy znaků.

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

Poznámky

Standard Unicode definuje řadu kategorií znaků Unicode. Znak může být například zařazen do kategorií jako velké písmeno, malé písmeno, desetinné číslice, číslo písmena, oddělovač odstavců, matematický symbol nebo symbol měny. Vaše aplikace může použít kategorii znaků k řízení operací založených na řetězcích, jako je parsování nebo extrakce podřetězcec s regulárními výrazy. Výčet UnicodeCategory definuje možné kategorie znaků.

CharUnicodeInfo Použijte třídu k získání UnicodeCategory hodnoty pro konkrétní znak. Třída CharUnicodeInfo definuje metody, které vrací následující hodnoty znaků Unicode:

  • Konkrétní kategorie, do které znak nebo náhradní pár patří. Vrácená hodnota je členem výčtu UnicodeCategory .

  • Číselná hodnota. Vztahuje se pouze na číselné znaky, včetně zlomků, dolních indexů, horních indexů, římských číslic, čitatelů měn, obklíčovaných čísel a číslic specifických pro skripty.

  • Číslicová hodnota. Platí pro číselné znaky, které lze kombinovat s jinými číselnými znaky, aby představovaly celé číslo v systému číslování.

  • Desetinná číslice. Platí pouze pro znaky, které představují desetinné číslice v desítkovém systému (základ 10). Desetinná číslice může být jedna z deseti číslic od nuly do devíti. Tyto znaky jsou členy UnicodeCategory.DecimalDigitNumber kategorie.

Kromě toho CharUnicodeInfo třídu interně používá řada dalších typů a metod rozhraní .NET, které jsou závislé na klasifikaci znaků. Tady jsou některé z nich:

  • Třída StringInfo , která pracuje s textovými prvky namísto jednotlivých znaků v řetězci.

  • Přetížení Char.GetUnicodeCategory metody, které určují kategorii, do které znak nebo náhradní pár patří.

  • Třídy znaků rozpoznané pomocí Regex, . Modul regulárních výrazů net.

Při použití této třídy ve vašich aplikacích mějte na paměti následující aspekty programování pro použití Char typu. Typ může být obtížně použitelný a řetězce jsou obecně vhodnější pro reprezentaci lingvistického obsahu.

  • Objekt Char nemusí vždy odpovídat jednomu znaku. Char I když typ představuje jednu 16bitovou hodnotu, některé znaky (například grafeme clustery a náhradní páry) se skládají ze dvou nebo více jednotek kódu UTF-16. Další informace najdete v tématu "Char Objects and Unicode Characters" ve String třídě.

  • Pojem "znak" je také flexibilní. Znak je často považován za glyf, ale mnoho glyfů vyžaduje více bodů kódu. Například ä může být reprezentován buď dvěma body kódu ("a" plus U+0308, což je kombinující diaeréze), nebo jediným bodem kódu ("ä" nebo U+00A4). Některé jazyky obsahují mnoho písmen, znaků a glyfů, které vyžadují více bodů kódu, což může způsobit nejasnosti v lingvistickém vyjádření obsahu. Existuje například ΰ (U+03B0, řecké malé písmeno upsilon s dialytikou a tonosem), ale neexistuje ekvivalentní velké písmeno. Horní část takové hodnoty jednoduše načte původní hodnotu.

Poznámky pro volající

Rozpoznané znaky a konkrétní kategorie, do kterých patří, jsou definovány standardem Unicode a můžou se měnit z jedné verze standardu Unicode na jinou. Kategorizace znaků v konkrétní verzi rozhraní .NET Framework je založena na jedné verzi standardu Unicode, bez ohledu na základní operační systém, na kterém je rozhraní .NET Framework spuštěno. Následující tabulka uvádí verze rozhraní .NET Framework od rozhraní .NET Framework 4 a verze standardu Unicode používané ke klasifikaci znaků.

Verze rozhraní .NET Framework Standardní verze unicode
.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
.NET Framework 4.6 6.3.0
.NET Framework 4.6.1 6.3.0
.NET Framework 4.6.2 8.0.0

Každá verze standardu Unicode obsahuje informace o změnách databáze znaků Unicode od předchozí verze. Znaková databáze Unicode je používána CharUnicodeInfo třídou pro kategorizaci znaků.

Metody

GetDecimalDigitValue(Char)

Získá hodnotu desetinné číslice zadaného číselného znaku.

GetDecimalDigitValue(String, Int32)

Získá desetinnou číslici hodnotu číselného znaku v zadaném indexu zadaného řetězce.

GetDigitValue(Char)

Získá číslici hodnotu zadaného číselného znaku.

GetDigitValue(String, Int32)

Získá číslicovou hodnotu číselného znaku v zadaném indexu zadaného řetězce.

GetNumericValue(Char)

Získá číselnou hodnotu přidruženou k zadanému znaku.

GetNumericValue(String, Int32)

Získá číselnou hodnotu přidruženou znaku v zadaném indexu zadaného řetězce.

GetUnicodeCategory(Char)

Získá Unicode kategorie zadaného znaku.

GetUnicodeCategory(Int32)

Získá Unicode kategorie zadaného znaku.

GetUnicodeCategory(String, Int32)

Získá Unicode kategorie znaku v zadaném indexu zadaného řetězce.

Platí pro

Viz také