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

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

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

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

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

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

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

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

调用方说明

识别的字符及其所属的特定类别由 Unicode 标准定义,可以从 Unicode Standard 的一个版本更改为另一个版本。 特定版本的 .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 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 类别。

适用于

另请参阅