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 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

  • 數值。 僅適用於數字字元,包括分數、下標、上標、羅馬數字、貨幣分子、圈中數字及文字專屬數字。

  • 數字值。 適用於可與其他數字字元組合以表示整數的數字字元。

  • 小數位數值。 僅適用於代表十進位(以十進位為十進位)數字的字元。 十進位數字可以是十位數字之一,從零到九。 這些角色屬於該 UnicodeCategory.DecimalDigitNumber 類別。

此外,CharUnicodeInfo 類別也被多種依賴字元分類的.NET類型與方法內部使用。 這些包括:

在應用中使用此類別時,請注意以下程式設計上的 Char 考量。 這種型別可能較難使用,而字串通常較適合用來表示語言內容。

  • 物件 Char 不一定對應單一字元。 雖然該 Char 型別代表單一的 16 位元值,但某些字元(如字素叢集與代理對)由兩個或多個 UTF-16 編碼單元組成。 欲了解更多資訊,請參閱本 String 類別中的「Char Objects and Unicode Characters」。

  • 「角色」的概念也很彈性。 字元通常被視為一個字形,但許多字形需要多個代碼點。 例如,ä 可以用兩個代碼點(「a」加上 U+0308,即合併的分位符號)表示,或用單一代碼點表示(「ä」或 U+00A4)。 有些語言包含許多字母、字元和字形,需要多個代碼點,這可能導致語言內容表示的混淆。 例如,存在一個 ΰ(U+03B0,希臘小寫字母 upsilon,帶有 dialytika 和 tonos),但沒有對應的大寫字母。 將此值放大後,僅僅取得原始值。

給呼叫者的注意事項

識別的字元及其所屬的特定類別由 Unicode 標準定義,且可從不同版本的 Unicode 標準變更。 特定版本框架中字元的分類.NET基於單一版本的 Unicode 標準,無論底層作業系統為何.NET框架。 下表列出自 Framework 4 以來.NET Framework.NET版本及用於分類字元的Unicode標準版本。

.NET 框架版本 Unicode 標準版本
.NET 架構 4 5.0.0
.NET 框架 4.5 5.0.0
.NET 框架 4.5.1 5.0.0
.NET 框架 4.5.2 5.0.0
.NET 框架 4.6 6.3.0
.NET 框架 4.6.1 6.3.0
.NET 框架 4.6.2 8.0.0

每個版本的 Unicode 標準都包含自上一版本以來 Unicode 字元資料庫變更的資訊。 Unicode 字元資料庫被類別用於 CharUnicodeInfo 字元分類。

方法

名稱 Description
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 類別。

適用於

另請參閱