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

  • 数值。 仅适用于数字字符,包括分数、下标、上标、罗马数字、货币分子、包围数字和特定于脚本的数字。

  • 数字值。 适用于可与其他数字字符组合以表示数字系统中的整数的数字字符。

  • 十进制数字值。 仅适用于表示十进制 (base 10) 系统中的十进制数字的字符。 十进制数字可以是十位数之一,从零到 9。 这些字符是类别的成员 UnicodeCategory.DecimalDigitNumber

此外,CharUnicodeInfo 类由依赖于字符分类的其他许多.NET类型和方法在内部使用。 这些包括:

在应用程序中使用此类时,请记住以下使用类型的 Char 编程注意事项。 该类型可能难以使用,字符串通常更适合表示语言内容。

  • 对象 Char 并不总是对应于单个字符。 尽管该 Char 类型表示单个 16 位值,但某些字符(如 grapheme 群集和代理项对)包含两个或更多个 UTF-16 代码单元。 有关详细信息,请参阅类中的 String “Char 对象和 Unicode 字符”。

  • “字符”的概念也是灵活的。 字符通常被视为字形,但许多字形需要多个码位。 例如,ä 可以由两个代码点(“a”加 U+0308(即组合分肢)或单个代码点(“ä”或 U+00A4)表示。 某些语言具有许多字母、字符和字形,这些字母、字符和字形需要多个代码点,这可能会导致语言内容表示形式混乱。 例如,有一个 ΰ (U+03B0,带 dialytika 和 tonos 的希腊文小写字母 upsilon),但没有等效的大写字母。 对此类值进行大写只是检索原始值。

调用方说明

识别的字符及其所属的特定类别由 Unicode 标准定义,并且可以从 Unicode 标准的一个版本更改为另一个版本。 特定版本的 .NET Framework 中的字符分类基于 Unicode Standard 的单个版本,而不考虑运行 .NET Framework 的基础操作系统。 下表列出了自 .NET Framework 4 以来的 .NET Framework 版本以及用于对字符进行分类的 Unicode 标准版本。

.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 框架 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 类别。

适用于

另请参阅