CharUnicodeInfo 類別

定義

擷取 Unicode 字元的相關資訊。 此類別無法獲得繼承。

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
繼承
CharUnicodeInfo

範例

下列程式碼範例顯示每個方法針對不同類型的字元所傳回的值。

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

備註

Unicode 標準會定義一些 Unicode 字元類別。 例如,字元可能會分類為大寫字母、小寫字母、小寫數位、小數位數、字母數位、段落分隔符號、數學符號或貨幣符號。 您的應用程式可以使用字元類別來管理以字串為基礎的作業,例如使用正則運算式剖析或擷取子字串。 列舉 UnicodeCategory 會定義可能的字元類別。

使用 類別 CharUnicodeInfo 來取得 UnicodeCategory 特定字元的值。 類別 CharUnicodeInfo 會定義傳回下列 Unicode 字元值的方法:

  • 字元或代理字組所屬的特定類別。 傳回的值是 列舉的成員 UnicodeCategory

  • 數值。 僅適用于數值字元,包括分數、下標、上標、羅馬數字、貨幣 Numerator、列舉的數位,以及腳本特定的數位。

  • 數位值。 適用于可以與其他數值字元結合的數值字元,以代表編號系統中的整數。

  • 十進位數值。 僅適用于十進位 (基底 10) 系統中代表十進位數的字元。 十進位數可以是十位數之一,從零到九。 這些字元是類別的成員 UnicodeCategory.DecimalDigitNumber

此外,類別 CharUnicodeInfo 會由依賴字元分類的其他許多 .NET 類型和方法在內部使用。 它們包括:

在應用程式中使用此類別時,請記住下列使用 Char 類型的程式設計考慮。 類型可能難以使用,而且字串通常最好用來表示語言內容。

  • Char物件不一定會對應至單一字元。 Char雖然類型代表單一 16 位值,但某些字元 (例如 grapheme 叢集和代理字組,) 由兩個或多個 UTF-16 字碼單位所組成。 For more information, see "Char Objects and Unicode Characters" in the String class.

  • 「字元」的概念也是彈性的。 字元通常被視為字元,但許多字元需要多個字碼點。 例如,ä 可以透過兩個字碼指標 (「a」 加上 U+0308 來表示,也就是結合分角) ,或由單一字碼指標 (「ä」 或 U+00A4) 來表示。 某些語言有許多字母、字元和字元需要多個字碼點,這可能會導致語言內容標記法混淆。 例如,有一個 ⓤ (U+03B0、具有 dialytika 和 tonos 的希臘小寫字母 upsilon) ,但沒有對等大寫字母。 大寫這類值只會擷取原始值。

給呼叫者的注意事項

辨識的字元及其所屬的特定類別是由 Unicode 標準所定義,而且可以從一個版本的 Unicode Standard 變更為另一個版本。 .NET Framework特定版本中的字元分類是以單一版本的 Unicode Standard 為基礎,不論執行.NET Framework的基礎作業系統為何。 下表列出自 .NET Framework 4 起的 .NET Framework 版本,以及用來分類字元的 Unicode Standard 版本。

.NET Framework 版本 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

每個 Unicode 標準版本都包含自舊版以來 Unicode 字元資料庫變更的相關資訊。 類別會使用 CharUnicodeInfo Unicode 字元資料庫來分類字元。

方法

GetDecimalDigitValue(Char)

取得指定之數字字元的十進位數值。

GetDecimalDigitValue(String, Int32)

取得數字字元的十進位數值,其位於指定字串的指定索引處。

GetDigitValue(Char)

取得指定之數字字元的數值。

GetDigitValue(String, Int32)

取得數字字元的數值,其位於指定字串的指定索引處。

GetNumericValue(Char)

取得與指定字元關聯的數值。

GetNumericValue(String, Int32)

取得數值,該值與指定字串之指定索引處的字元關聯。

GetUnicodeCategory(Char)

取得指定之字元的 Unicode 分類。

GetUnicodeCategory(Int32)

取得指定之字元的 Unicode 分類。

GetUnicodeCategory(String, Int32)

取得字元的 Unicode 分類,其位於指定字串的指定索引處。

適用於

另請參閱