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 字元值的方法:

  • 字元或 Surrogate 配對所屬的特定類別。 傳回的值是 列舉的成員 UnicodeCategory

  • 數值。 僅適用於數值字元,包括分數、下標、上標、羅馬數位、貨幣 numerator、列舉數位和腳本特定數位。

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

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

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

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

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

  • 「字元」的概念也是彈性的。 字元通常被視為字元,但許多字元都需要多個字碼點。 例如,ä 可以透過兩個字碼點 (“a” 加上 U+0308 來表示,也就是合併診斷) ,或由單一字碼點 (“ä” 或 U+00A4) 來表示。 有些語言有許多字母、字元和字元,需要多個字碼點,這可能會導致語言內容表示法混淆。 例如,有一個 (u) (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 分類,其位於指定字串的指定索引處。

適用於

另請參閱