Char Structure

Définition

Représente un caractère sous forme d'une unité de code UTF-16.

public value class char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public value class char : IComparable, IComparable<char>, IConvertible, IEquatable<char>, ISpanFormattable
public value class char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, System::Numerics::IAdditionOperators<char, char, char>, System::Numerics::IAdditiveIdentity<char, char>, System::Numerics::IBinaryInteger<char>, System::Numerics::IBinaryNumber<char>, System::Numerics::IBitwiseOperators<char, char, char>, System::Numerics::IComparisonOperators<char, char, bool>, System::Numerics::IDecrementOperators<char>, System::Numerics::IDivisionOperators<char, char, char>, System::Numerics::IEqualityOperators<char, char, bool>, System::Numerics::IIncrementOperators<char>, System::Numerics::IMinMaxValue<char>, System::Numerics::IModulusOperators<char, char, char>, System::Numerics::IMultiplicativeIdentity<char, char>, System::Numerics::IMultiplyOperators<char, char, char>, System::Numerics::INumber<char>, System::Numerics::INumberBase<char>, System::Numerics::IShiftOperators<char, int, char>, System::Numerics::ISubtractionOperators<char, char, char>, System::Numerics::IUnaryNegationOperators<char, char>, System::Numerics::IUnaryPlusOperators<char, char>, System::Numerics::IUnsignedNumber<char>
public value class char : IComparable, IConvertible
public value class char : IComparable, IComparable<char>, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public readonly struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public readonly struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>, ISpanFormattable
public readonly struct Char : IComparable<char>, IConvertible, IEquatable<char>, IParsable<char>, ISpanParsable<char>, System.Numerics.IAdditionOperators<char,char,char>, System.Numerics.IAdditiveIdentity<char,char>, System.Numerics.IBinaryInteger<char>, System.Numerics.IBinaryNumber<char>, System.Numerics.IBitwiseOperators<char,char,char>, System.Numerics.IComparisonOperators<char,char,bool>, System.Numerics.IDecrementOperators<char>, System.Numerics.IDivisionOperators<char,char,char>, System.Numerics.IEqualityOperators<char,char,bool>, System.Numerics.IIncrementOperators<char>, System.Numerics.IMinMaxValue<char>, System.Numerics.IModulusOperators<char,char,char>, System.Numerics.IMultiplicativeIdentity<char,char>, System.Numerics.IMultiplyOperators<char,char,char>, System.Numerics.INumber<char>, System.Numerics.INumberBase<char>, System.Numerics.IShiftOperators<char,int,char>, System.Numerics.ISubtractionOperators<char,char,char>, System.Numerics.IUnaryNegationOperators<char,char>, System.Numerics.IUnaryPlusOperators<char,char>, System.Numerics.IUnsignedNumber<char>
[System.Serializable]
public struct Char : IComparable, IConvertible
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
public struct Char : IComparable, IComparable<char>, IEquatable<char>
type char = struct
    interface IConvertible
type char = struct
    interface IConvertible
    interface ISpanFormattable
    interface IFormattable
type char = struct
    interface IConvertible
    interface IFormattable
    interface IParsable<char>
    interface ISpanFormattable
    interface ISpanParsable<char>
    interface IAdditionOperators<char, char, char>
    interface IAdditiveIdentity<char, char>
    interface IBinaryInteger<char>
    interface IBinaryNumber<char>
    interface IBitwiseOperators<char, char, char>
    interface IComparisonOperators<char, char, bool>
    interface IEqualityOperators<char, char, bool>
    interface IDecrementOperators<char>
    interface IDivisionOperators<char, char, char>
    interface IIncrementOperators<char>
    interface IModulusOperators<char, char, char>
    interface IMultiplicativeIdentity<char, char>
    interface IMultiplyOperators<char, char, char>
    interface INumber<char>
    interface INumberBase<char>
    interface ISubtractionOperators<char, char, char>
    interface IUnaryNegationOperators<char, char>
    interface IUnaryPlusOperators<char, char>
    interface IShiftOperators<char, int, char>
    interface IMinMaxValue<char>
    interface IUnsignedNumber<char>
[<System.Serializable>]
type char = struct
    interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type char = struct
    interface IConvertible
type char = struct
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char)
Public Structure Char
Implements IComparable, IComparable(Of Char), IConvertible, IEquatable(Of Char), ISpanFormattable
Public Structure Char
Implements IAdditionOperators(Of Char, Char, Char), IAdditiveIdentity(Of Char, Char), IBinaryInteger(Of Char), IBinaryNumber(Of Char), IBitwiseOperators(Of Char, Char, Char), IComparable(Of Char), IComparisonOperators(Of Char, Char, Boolean), IConvertible, IDecrementOperators(Of Char), IDivisionOperators(Of Char, Char, Char), IEqualityOperators(Of Char, Char, Boolean), IEquatable(Of Char), IIncrementOperators(Of Char), IMinMaxValue(Of Char), IModulusOperators(Of Char, Char, Char), IMultiplicativeIdentity(Of Char, Char), IMultiplyOperators(Of Char, Char, Char), INumber(Of Char), INumberBase(Of Char), IParsable(Of Char), IShiftOperators(Of Char, Integer, Char), ISpanParsable(Of Char), ISubtractionOperators(Of Char, Char, Char), IUnaryNegationOperators(Of Char, Char), IUnaryPlusOperators(Of Char, Char), IUnsignedNumber(Of Char)
Public Structure Char
Implements IComparable, IConvertible
Public Structure Char
Implements IComparable, IComparable(Of Char), IEquatable(Of Char)
Héritage
Attributs
Implémente

Exemples

L’exemple de code suivant illustre certaines des méthodes dans Char.

using namespace System;
int main()
{
   char chA = 'A';
   char ch1 = '1';
   String^ str =  "test string";
   Console::WriteLine( chA.CompareTo( 'B' ) ); // Output: "-1" (meaning 'A' is 1 less than 'B')
   Console::WriteLine( chA.Equals( 'A' ) ); // Output: "True"
   Console::WriteLine( Char::GetNumericValue( ch1 ) ); // Output: "1"
   Console::WriteLine( Char::IsControl( '\t' ) ); // Output: "True"
   Console::WriteLine( Char::IsDigit( ch1 ) ); // Output: "True"
   Console::WriteLine( Char::IsLetter( ',' ) ); // Output: "False"
   Console::WriteLine( Char::IsLower( 'u' ) ); // Output: "True"
   Console::WriteLine( Char::IsNumber( ch1 ) ); // Output: "True"
   Console::WriteLine( Char::IsPunctuation( '.' ) ); // Output: "True"
   Console::WriteLine( Char::IsSeparator( str, 4 ) ); // Output: "True"
   Console::WriteLine( Char::IsSymbol( '+' ) ); // Output: "True"
   Console::WriteLine( Char::IsWhiteSpace( str, 4 ) ); // Output: "True"
   Console::WriteLine( Char::Parse(  "S" ) ); // Output: "S"
   Console::WriteLine( Char::ToLower( 'M' ) ); // Output: "m"
   Console::WriteLine( 'x' ); // Output: "x"
}
using System;

public class CharStructureSample
{
    public static void Main()
    {
        char chA = 'A';
        char ch1 = '1';
        string str = "test string";

        Console.WriteLine(chA.CompareTo('B'));          //-----------  Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals('A'));             //-----------  Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1));   //-----------  Output: "1"
        Console.WriteLine(Char.IsControl('\t'));        //-----------  Output: "True"
        Console.WriteLine(Char.IsDigit(ch1));           //-----------  Output: "True"
        Console.WriteLine(Char.IsLetter(','));          //-----------  Output: "False"
        Console.WriteLine(Char.IsLower('u'));           //-----------  Output: "True"
        Console.WriteLine(Char.IsNumber(ch1));          //-----------  Output: "True"
        Console.WriteLine(Char.IsPunctuation('.'));     //-----------  Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4));    //-----------  Output: "True"
        Console.WriteLine(Char.IsSymbol('+'));          //-----------  Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4));   //-----------  Output: "True"
        Console.WriteLine(Char.Parse("S"));             //-----------  Output: "S"
        Console.WriteLine(Char.ToLower('M'));           //-----------  Output: "m"
        Console.WriteLine('x'.ToString());              //-----------  Output: "x"
    }
}
open System

let chA = 'A'
let ch1 = '1'
let str = "test string"

printfn $"{chA.CompareTo 'B'}"          //-----------  Output: "-1" (meaning 'A' is 1 less than 'B')
printfn $"{chA.Equals 'A'}"             //-----------  Output: "True"
printfn $"{Char.GetNumericValue ch1}"   //-----------  Output: "1"
printfn $"{Char.IsControl '\t'}"        //-----------  Output: "True"
printfn $"{Char.IsDigit ch1}"           //-----------  Output: "True"
printfn $"{Char.IsLetter ','}"          //-----------  Output: "False"
printfn $"{Char.IsLower 'u'}"           //-----------  Output: "True"
printfn $"{Char.IsNumber ch1}"          //-----------  Output: "True"
printfn $"{Char.IsPunctuation '.'}"     //-----------  Output: "True"
printfn $"{Char.IsSeparator(str, 4)}"   //-----------  Output: "True"
printfn $"{Char.IsSymbol '+'}"          //-----------  Output: "True"
printfn $"{Char.IsWhiteSpace(str, 4)}"  //-----------  Output: "True"
printfn $"""{Char.Parse "S"}"""         //-----------  Output: "S"
printfn $"{Char.ToLower 'M'}"           //-----------  Output: "m"
printfn $"{'x'}"                        //-----------  Output: "x"
Module CharStructure

    Public Sub Main()

        Dim chA As Char
        chA = "A"c
        Dim ch1 As Char
        ch1 = "1"c
        Dim str As String
        str = "test string"

        Console.WriteLine(chA.CompareTo("B"c))          ' Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals("A"c))             ' Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1))    ' Output: "1"
        Console.WriteLine(Char.IsControl(Chr(9)))       ' Output: "True"
        Console.WriteLine(Char.IsDigit(ch1))            ' Output: "True"
        Console.WriteLine(Char.IsLetter(","c))          ' Output: "False"
        Console.WriteLine(Char.IsLower("u"c))           ' Output: "True"
        Console.WriteLine(Char.IsNumber(ch1))           ' Output: "True"
        Console.WriteLine(Char.IsPunctuation("."c))     ' Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4))     ' Output: "True"
        Console.WriteLine(Char.IsSymbol("+"c))          ' Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4))    ' Output: "True"
        Console.WriteLine(Char.Parse("S"))              ' Output: "S"
        Console.WriteLine(Char.ToLower("M"c))           ' Output: "m"
        Console.WriteLine("x"c.ToString())              ' Output: "x"

    End Sub

End Module

Remarques

.NET utilise la structure pour représenter des Char points de code Unicode à l’aide de l’encodage UTF-16. La valeur d’un Char objet est sa valeur numérique (ordinale) 16 bits.

Si vous n’êtes pas familiarisé avec Unicode, les valeurs scalaires, les points de code, les paires de substitution, UTF-16 et le type, consultez Présentation de l’encodageRune de caractères dans .NET.

Les sections suivantes examinent la relation entre un Char objet et un caractère et décrivent certaines tâches courantes effectuées avec Char des instances. Nous vous recommandons d’envisager le Rune type, introduit dans .NET Core 3.0, comme alternative à Char l’exécution de certaines de ces tâches.

Objets Char, caractères Unicode et chaînes

Un String objet est une collection séquentielle de Char structures qui représente une chaîne de texte. La plupart des caractères Unicode peuvent être représentés par un seul Char objet, mais un caractère encodé en tant que caractère de base, paire de substitution et/ou séquence de caractères combinant est représenté par plusieurs Char objets. Pour cette raison, une Char structure dans un String objet n’est pas nécessairement équivalente à un caractère Unicode unique.

Plusieurs unités de code 16 bits sont utilisées pour représenter des caractères Unicode uniques dans les cas suivants :

  • Glyphes, qui peuvent se composer d’un caractère unique ou d’un caractère de base suivi d’un ou plusieurs caractères de combinaison. Par exemple, le caractère ä est représenté par un Char objet dont l’unité de code est U+0061 suivi d’un Char objet dont l’unité de code est U+0308. (Le caractère ä peut également être défini par un objet unique Char qui a une unité de code de U+00E4.) L’exemple suivant montre que le caractère ä se compose de deux Char objets.

    using System;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          StreamWriter sw = new StreamWriter("chars1.txt");
          char[] chars = { '\u0061', '\u0308' };
          string strng = new String(chars);
          sw.WriteLine(strng);
          sw.Close();
       }
    }
    // The example produces the following output:
    //       ä
    
    open System
    open System.IO
    
    let sw = new StreamWriter("chars1.txt")
    let chars = [| '\u0061'; '\u0308' |]
    let string = String chars
    sw.WriteLine string
    sw.Close()
    
    // The example produces the following output:
    //       ä
    
    Imports System.IO
    
    Module Example
       Public Sub Main()
          Dim sw As New StreamWriter("chars1.txt")
          Dim chars() As Char = { ChrW(&h0061), ChrW(&h0308) }
          Dim strng As New String(chars)
          sw.WriteLine(strng) 
          sw.Close()
       End Sub
    End Module
    ' The example produces the following output:
    '       ä
    
  • Caractères en dehors du plan multilingue de base (BMP) Unicode. Unicode prend en charge seize plans en plus du BMP, qui représente le plan 0. Un point de code Unicode est représenté dans UTF-32 par une valeur 21 bits qui inclut le plan. Par exemple, U+1D160 représente le caractère DE SYMBOLE MUSICAL HUITIÈME NOTE. Étant donné que l’encodage UTF-16 n’a que 16 bits, les caractères en dehors du BMP sont représentés par des paires de substitution dans UTF-16. L’exemple suivant montre que l’équivalent UTF-32 de U+1D160, le caractère SYMBOLE MUSICAL HUITIÈME NOTE, est U+D834 U+DD60. U+D834 est le substitut élevé; les substituts élevés vont de U+D800 à U+DBFF. U+DD60 est le substitut faible ; faible plage de substituts de U+DC00 à U+DFFF.

    using System;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          StreamWriter sw = new StreamWriter(@".\chars2.txt");
          int utf32 = 0x1D160;
          string surrogate = Char.ConvertFromUtf32(utf32);
          sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16",
                       utf32, surrogate, ShowCodePoints(surrogate));
          sw.Close();
       }
    
       private static string ShowCodePoints(string value)
       {
          string retval = null;
          foreach (var ch in value)
             retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch));
    
          return retval.Trim();
       }
    }
    // The example produces the following output:
    //       U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
    
    open System
    open System.IO
    
    let showCodePoints (value: char seq) =
        let str =
            value
            |> Seq.map (fun ch -> $"U+{Convert.ToUInt16 ch:X4}")
            |> String.concat ""
        str.Trim()
    
    let sw = new StreamWriter(@".\chars2.txt")
    let utf32 = 0x1D160
    let surrogate = Char.ConvertFromUtf32 utf32
    sw.WriteLine $"U+{utf32:X6} UTF-32 = {surrogate} ({showCodePoints surrogate}) UTF-16"
    sw.Close()
    
    // The example produces the following output:
    //       U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
    
    Imports System.IO
    
    Module Example
       Public Sub Main()
          Dim sw As New StreamWriter(".\chars2.txt")
          Dim utf32 As Integer = &h1D160
          Dim surrogate As String = Char.ConvertFromUtf32(utf32)
          sw.WriteLine("U+{0:X6} UTF-32 = {1} ({2}) UTF-16", 
                       utf32, surrogate, ShowCodePoints(surrogate))
          sw.Close()                    
       End Sub
    
       Private Function ShowCodePoints(value As String) As String
          Dim retval As String = Nothing
          For Each ch In value
             retval += String.Format("U+{0:X4} ", Convert.ToUInt16(ch))
          Next
          Return retval.Trim()
       End Function
    End Module
    ' The example produces the following output:
    '       U+01D160 UTF-32 = ð (U+D834 U+DD60) UTF-16
    

Caractères et catégories de caractères

Chaque caractère Unicode ou paire de substitution valide appartient à une catégorie Unicode. Dans .NET, les catégories Unicode sont représentées par les membres de l’énumération UnicodeCategory et incluent des valeurs telles que UnicodeCategory.CurrencySymbol, UnicodeCategory.LowercaseLetteret UnicodeCategory.SpaceSeparator, par exemple.

Pour déterminer la catégorie Unicode d’un caractère, appelez la GetUnicodeCategory méthode . Par exemple, l’exemple suivant appelle le GetUnicodeCategory pour afficher la catégorie Unicode de chaque caractère d’une chaîne. L’exemple fonctionne correctement uniquement s’il n’y a pas de paires de substitution dans l’instance String .

using System;
using System.Globalization;

class Example
{
   public static void Main()
   {
      // Define a string with a variety of character categories.
      String s = "The red car drove down the long, narrow, secluded road.";
      // Determine the category of each character.
      foreach (var ch in s)
         Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch));
   }
}
// The example displays the following output:
//      'T': UppercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'c': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'v': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      'n': LowercaseLetter
//      ' ': SpaceSeparator
//      't': LowercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'l': LowercaseLetter
//      'o': LowercaseLetter
//      'n': LowercaseLetter
//      'g': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      'n': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      's': LowercaseLetter
//      'e': LowercaseLetter
//      'c': LowercaseLetter
//      'l': LowercaseLetter
//      'u': LowercaseLetter
//      'd': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'a': LowercaseLetter
//      'd': LowercaseLetter
//      '.': OtherPunctuation
open System

// Define a string with a variety of character categories.
let s = "The red car drove down the long, narrow, secluded road."
// Determine the category of each character.
for ch in s do
    printfn $"'{ch}': {Char.GetUnicodeCategory ch}"

// The example displays the following output:
//      'T': UppercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'c': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'v': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'd': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      'n': LowercaseLetter
//      ' ': SpaceSeparator
//      't': LowercaseLetter
//      'h': LowercaseLetter
//      'e': LowercaseLetter
//      ' ': SpaceSeparator
//      'l': LowercaseLetter
//      'o': LowercaseLetter
//      'n': LowercaseLetter
//      'g': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      'n': LowercaseLetter
//      'a': LowercaseLetter
//      'r': LowercaseLetter
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'w': LowercaseLetter
//      ',': OtherPunctuation
//      ' ': SpaceSeparator
//      's': LowercaseLetter
//      'e': LowercaseLetter
//      'c': LowercaseLetter
//      'l': LowercaseLetter
//      'u': LowercaseLetter
//      'd': LowercaseLetter
//      'e': LowercaseLetter
//      'd': LowercaseLetter
//      ' ': SpaceSeparator
//      'r': LowercaseLetter
//      'o': LowercaseLetter
//      'a': LowercaseLetter
//      'd': LowercaseLetter
//      '.': OtherPunctuation
Imports System.Globalization

Module Example
   Public Sub Main()
      ' Define a string with a variety of character categories.
      Dim s As String = "The car drove down the narrow, secluded road."
      ' Determine the category of each character.
      For Each ch In s
         Console.WriteLine("'{0}': {1}", ch, Char.GetUnicodeCategory(ch)) 
      Next
   End Sub
End Module
' The example displays the following output:
'       'T': UppercaseLetter
'       'h': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'r': LowercaseLetter
'       'e': LowercaseLetter
'       'd': LowercaseLetter
'       ' ': SpaceSeparator
'       'c': LowercaseLetter
'       'a': LowercaseLetter
'       'r': LowercaseLetter
'       ' ': SpaceSeparator
'       'd': LowercaseLetter
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'v': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'd': LowercaseLetter
'       'o': LowercaseLetter
'       'w': LowercaseLetter
'       'n': LowercaseLetter
'       ' ': SpaceSeparator
'       't': LowercaseLetter
'       'h': LowercaseLetter
'       'e': LowercaseLetter
'       ' ': SpaceSeparator
'       'l': LowercaseLetter
'       'o': LowercaseLetter
'       'n': LowercaseLetter
'       'g': LowercaseLetter
'       ',': OtherPunctuation
'       ' ': SpaceSeparator
'       'n': LowercaseLetter
'       'a': LowercaseLetter
'       'r': LowercaseLetter
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'w': LowercaseLetter
'       ',': OtherPunctuation
'       ' ': SpaceSeparator
'       's': LowercaseLetter
'       'e': LowercaseLetter
'       'c': LowercaseLetter
'       'l': LowercaseLetter
'       'u': LowercaseLetter
'       'd': LowercaseLetter
'       'e': LowercaseLetter
'       'd': LowercaseLetter
'       ' ': SpaceSeparator
'       'r': LowercaseLetter
'       'o': LowercaseLetter
'       'a': LowercaseLetter
'       'd': LowercaseLetter
'       '.': OtherPunctuation

En interne, pour les caractères en dehors de la plage ASCII (U+0000 à U+00FF), la GetUnicodeCategory méthode dépend des catégories Unicode signalées par la CharUnicodeInfo classe. À compter de .NET Framework 4.6.2, les caractères Unicode sont classés en fonction de la norme Unicode, version 8.0.0. Dans les versions du .NET Framework de .NET Framework 4 à .NET Framework 4.6.1, elles sont classées en fonction de la norme Unicode, version 6.3.0.

Caractères et éléments de texte

Étant donné qu’un seul caractère peut être représenté par plusieurs Char objets, il n’est pas toujours significatif d’utiliser des objets individuels Char . Par exemple, l’exemple suivant convertit les points de code Unicode qui représentent les nombres égéens de zéro à 9 en unités de code encodées UTF-16. Étant donné qu’il assimile à tort des objets à des Char caractères, il signale à tort que la chaîne résultante a 20 caractères.

using System;

public class Example
{
   public static void Main()
   {
      string result = String.Empty;
      for (int ctr = 0x10107; ctr <= 0x10110; ctr++)  // Range of Aegean numbers.
         result += Char.ConvertFromUtf32(ctr);

      Console.WriteLine("The string contains {0} characters.", result.Length);
   }
}
// The example displays the following output:
//     The string contains 20 characters.
open System

let result =
    [ for i in 0x10107..0x10110 do  // Range of Aegean numbers.
        Char.ConvertFromUtf32 i ]
    |> String.concat ""

printfn $"The string contains {result.Length} characters."


// The example displays the following output:
//     The string contains 20 characters.
Module Example
   Public Sub Main()
      Dim result As String = String.Empty
      For ctr As Integer = &h10107 To &h10110     ' Range of Aegean numbers.
         result += Char.ConvertFromUtf32(ctr)
      Next         
      Console.WriteLine("The string contains {0} characters.", result.Length) 
   End Sub
End Module
' The example displays the following output:
'     The string contains 20 characters.

Vous pouvez effectuer les opérations suivantes pour éviter l’hypothèse qu’un Char objet représente un caractère unique :

  • Vous pouvez utiliser un String objet dans son intégralité au lieu de travailler avec ses caractères individuels pour représenter et analyser le contenu linguistique.

  • Vous pouvez utiliser String.EnumerateRunes comme indiqué dans l’exemple suivant :

    int CountLetters(string s)
    {
        int letterCount = 0;
    
        foreach (Rune rune in s.EnumerateRunes())
        {
            if (Rune.IsLetter(rune))
            { letterCount++; }
        }
    
        return letterCount;
    }
    
    let countLetters (s: string) =
        let mutable letterCount = 0
    
        for rune in s.EnumerateRunes() do
            if Rune.IsLetter rune then
                letterCount <- letterCount + 1
    
        letterCount
    
  • Vous pouvez utiliser la StringInfo classe pour travailler avec des éléments de texte au lieu d’objets individuels Char . L’exemple suivant utilise l’objet StringInfo pour compter le nombre d’éléments de texte dans une chaîne qui se compose des nombres égéens de zéro à neuf. Étant donné qu’elle considère une paire de substitution comme un caractère unique, elle signale correctement que la chaîne contient dix caractères.

    using System;
    using System.Globalization;
    
    public class Example
    {
       public static void Main()
       {
          string result = String.Empty;
          for (int ctr = 0x10107; ctr <= 0x10110; ctr++)  // Range of Aegean numbers.
             result += Char.ConvertFromUtf32(ctr);
    
          StringInfo si = new StringInfo(result);
          Console.WriteLine("The string contains {0} characters.",
                            si.LengthInTextElements);
       }
    }
    // The example displays the following output:
    //       The string contains 10 characters.
    
    open System
    open System.Globalization
    
    let result =
        [ for i in 0x10107..0x10110 do  // Range of Aegean numbers.
            Char.ConvertFromUtf32 i ]
        |> String.concat ""
    
    
    let si = StringInfo result
    printfn $"The string contains {si.LengthInTextElements} characters."
    
    // The example displays the following output:
    //       The string contains 10 characters.
    
    Imports System.Globalization
    
    Module Example
       Public Sub Main()
          Dim result As String = String.Empty
          For ctr As Integer = &h10107 To &h10110     ' Range of Aegean numbers.
             result += Char.ConvertFromUtf32(ctr)
          Next         
          Dim si As New StringInfo(result)
          Console.WriteLine("The string contains {0} characters.", si.LengthInTextElements) 
       End Sub
    End Module
    ' The example displays the following output:
    '       The string contains 10 characters.
    
  • Si une chaîne contient un caractère de base comportant un ou plusieurs caractères de combinaison, vous pouvez appeler la String.Normalize méthode pour convertir la sous-chaîne en une seule unité de code encodée UTF-16. L’exemple suivant appelle la String.Normalize méthode pour convertir le caractère de base U+0061 (LETTRE MINUSCULE LATINE A) et combiner le caractère U+0308 (COMBINING DIAERESIS) en U+00E4 (LETTRE MINUSCULE LATINE A AVEC DIAERESIS).

    using System;
    
    public class Example
    {
       public static void Main()
       {
          string combining = "\u0061\u0308";
          ShowString(combining);
    
          string normalized = combining.Normalize();
          ShowString(normalized);
       }
    
       private static void ShowString(string s)
       {
          Console.Write("Length of string: {0} (", s.Length);
          for (int ctr = 0; ctr < s.Length; ctr++) {
             Console.Write("U+{0:X4}", Convert.ToUInt16(s[ctr]));
             if (ctr != s.Length - 1) Console.Write(" ");
          }
          Console.WriteLine(")\n");
       }
    }
    // The example displays the following output:
    //       Length of string: 2 (U+0061 U+0308)
    //
    //       Length of string: 1 (U+00E4)
    
    open System
    
    let showString (s: string) =
        printf $"Length of string: {s.Length} ("
        for i = 0 to s.Length - 1 do
            printf $"U+{Convert.ToUInt16 s[i]:X4}"
            if i <> s.Length - 1 then printf " "
        printfn ")\n"
    
    let combining = "\u0061\u0308"
    showString combining
    
    let normalized = combining.Normalize()
    showString normalized
    
    // The example displays the following output:
    //       Length of string: 2 (U+0061 U+0308)
    //
    //       Length of string: 1 (U+00E4)
    
    Module Example
       Public Sub Main()
          Dim combining As String = ChrW(&h0061) + ChrW(&h0308)
          ShowString(combining)
          
          Dim normalized As String = combining.Normalize()
          ShowString(normalized)
       End Sub
       
       Private Sub ShowString(s As String)
          Console.Write("Length of string: {0} (", s.Length)
          For ctr As Integer = 0 To s.Length - 1
             Console.Write("U+{0:X4}", Convert.ToUInt16(s(ctr)))
             If ctr <> s.Length - 1 Then Console.Write(" ")
          Next 
          Console.WriteLine(")")
          Console.WriteLine()
       End Sub
    End Module
    ' The example displays the following output:
    '       Length of string: 2 (U+0061 U+0308)
    '       
    '       Length of string: 1 (U+00E4)
    

Opérations courantes

La Char structure fournit des méthodes pour comparer des Char objets, convertir la valeur de l’objet actuel Char en objet d’un autre type et déterminer la catégorie Unicode d’un Char objet :

Pour Utilisez ces System.Char méthodes
Comparer des Char objets CompareTo et Equals
Convertir un point de code en chaîne ConvertFromUtf32

Consultez également le Rune type.
Convertir un Char objet ou une paire de substituts d’objets en point de Char code Pour un caractère unique : Convert.ToInt32(Char)

Pour une paire de substitution ou un caractère dans une chaîne : Char.ConvertToUtf32

Consultez également le Rune type.
Obtenir la catégorie Unicode d’un caractère GetUnicodeCategory

Voir aussi Rune.GetUnicodeCategory.
Déterminer si un caractère se trouve dans une catégorie Unicode particulière, comme un chiffre, une lettre, une ponctuation, un caractère de contrôle, et ainsi de suite IsControl, , IsHighSurrogateIsDigit, IsLetter, IsLetterOrDigit, IsLower, IsLowSurrogateIsNumber, IsPunctuationIsSeparator, IsSurrogate, , IsSurrogatePair, IsSymbol, , IsUpper, etIsWhiteSpace

Consultez également les méthodes correspondantes sur le Rune type.
Convertir un Char objet qui représente un nombre en type de valeur numérique GetNumericValue

Voir aussi Rune.GetNumericValue.
Convertir un caractère d’une chaîne en objet Char Parse et TryParse
Convertir un Char objet en objet String ToString
Modifier la casse d’un Char objet ToLower, ToLowerInvariant, ToUpper et ToUpperInvariant

Consultez également les méthodes correspondantes sur le Rune type.

Valeurs de char et interopérabilité

Lorsqu’un type managé Char , représenté sous la forme d’une unité de code encodé en Unicode UTF-16, est passé au code non managé, le marshaleur d’interopérabilité convertit le jeu de caractères en ANSI par défaut. Vous pouvez appliquer l’attribut DllImportAttribute aux déclarations d’appel de plateforme et l’attribut StructLayoutAttribute à une déclaration d’interopérabilité COM pour contrôler le jeu de caractères utilisé par un type marshalé Char .

Champs

MaxValue

Représente la plus grande valeur possible d'un Char. Ce champ est constant.

MinValue

Représente la plus petite valeur possible de Char. Ce champ est constant.

Méthodes

CompareTo(Char)

Compare cette instance à un objet Char spécifié et indique si cette instance précède, suit ou apparaît à la même position dans l'ordre de tri que l'objet Char spécifié.

CompareTo(Object)

Compare cette instance à un objet spécifié et indique si cette instance précède, suit ou apparaît à la même position dans l'ordre de tri que le Object spécifié.

ConvertFromUtf32(Int32)

Convertit le point de code Unicode spécifié en une chaîne encodée UTF-16.

ConvertToUtf32(Char, Char)

Convertit la valeur d'une paire de substitution encodée UTF-16 en point de code Unicode.

ConvertToUtf32(String, Int32)

Convertit la valeur d'une paire de substitution ou d'un caractère encodé UTF-16 à un emplacement précis d'une chaîne en un point de code Unicode.

Equals(Char)

Retourne une valeur qui indique si cette instance équivaut à l'objet Char spécifié.

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

GetHashCode()

Retourne le code de hachage de cette instance.

GetNumericValue(Char)

Convertit le caractère Unicode numérique spécifié en un nombre à virgule flottante double précision.

GetNumericValue(String, Int32)

Convertit le caractère Unicode numérique à la position spécifiée dans une chaîne spécifiée en un nombre à virgule flottante double précision.

GetTypeCode()

Retourne le TypeCode du type valeur Char.

GetUnicodeCategory(Char)

Classe un caractère Unicode spécifié dans un groupe identifié par l'une des valeurs UnicodeCategory.

GetUnicodeCategory(String, Int32)

Classe le caractère figurant à la position spécifiée dans une chaîne spécifiée dans un groupe identifié par l'une des valeurs UnicodeCategory.

IsAscii(Char)

Retourne true si c est un caractère ASCII ([ U+0000..U+007F ]).

IsAsciiDigit(Char)

Indique si un caractère est classé comme un chiffre ASCII.

IsAsciiHexDigit(Char)

Indique si un caractère est classé comme un chiffre hexadécimal ASCII.

IsAsciiHexDigitLower(Char)

Indique si un caractère est classé comme un chiffre hexadécimal en minuscules ASCII.

IsAsciiHexDigitUpper(Char)

Indique si un caractère est classé comme un chiffre hexadécimal en majuscules ASCII.

IsAsciiLetter(Char)

Indique si un caractère est classé comme une lettre ASCII.

IsAsciiLetterLower(Char)

Indique si un caractère est classé comme une lettre ASCII minuscule.

IsAsciiLetterOrDigit(Char)

Indique si un caractère est classé comme une lettre ou un chiffre ASCII.

IsAsciiLetterUpper(Char)

Indique si un caractère est classé comme une lettre ASCII majuscule.

IsBetween(Char, Char, Char)

Indique si un caractère se trouve dans la plage inclusive spécifiée.

IsControl(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des caractères de contrôle.

IsControl(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des caractères de contrôle.

IsDigit(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des chiffres décimaux.

IsDigit(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des chiffres décimaux.

IsHighSurrogate(Char)

Indique si l'objet Char spécifié est un caractère de substitution étendu.

IsHighSurrogate(String, Int32)

Indique si l'objet Char à la position spécifiée dans une chaîne est un caractère de substitution étendu.

IsLetter(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des lettres Unicode.

IsLetter(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des lettres Unicode.

IsLetterOrDigit(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des lettres ou des chiffres décimaux.

IsLetterOrDigit(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des lettres ou des chiffres décimaux.

IsLower(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des lettres minuscules.

IsLower(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des minuscules.

IsLowSurrogate(Char)

Indique si l'objet Char spécifié est un caractère de substitution faible.

IsLowSurrogate(String, Int32)

Indique si l'objet Char à la position spécifiée dans une chaîne est un caractère de substitution faible.

IsNumber(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des nombres.

IsNumber(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des nombres.

IsPunctuation(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des signes de ponctuation.

IsPunctuation(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des signes de ponctuation.

IsSeparator(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des caractères de séparation.

IsSeparator(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des caractères de séparation.

IsSurrogate(Char)

Indique si le caractère spécifié possède une unité de code de substitution.

IsSurrogate(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée possède une unité de code de substitution.

IsSurrogatePair(Char, Char)

Indique si les deux objets Char spécifiés forment une paire de substitution.

IsSurrogatePair(String, Int32)

Indique si deux objets Char adjacents à une position spécifiée dans une chaîne forment une paire de substitution.

IsSymbol(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des symboles.

IsSymbol(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des symboles.

IsUpper(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des lettres majuscules.

IsUpper(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des majuscules.

IsWhiteSpace(Char)

Indique si le caractère Unicode spécifié est classé dans la catégorie des espaces blancs.

IsWhiteSpace(String, Int32)

Indique si le caractère figurant à la position spécifiée dans une chaîne spécifiée est classé dans la catégorie des espaces blancs.

Parse(String)

Convertit la valeur de la chaîne spécifiée en caractère Unicode équivalent.

ToLower(Char)

Convertit la valeur d'un caractère Unicode en son équivalent en minuscules.

ToLower(Char, CultureInfo)

Convertit la valeur d'un caractère Unicode spécifié en son équivalent en minuscules à l'aide des informations de mise en forme spécifiques à la culture.

ToLowerInvariant(Char)

Convertit la valeur d'un caractère Unicode en son équivalent minuscule à l'aide des règles de casse de la culture dite indifférente.

ToString()

Convertit la valeur de cette instance en sa représentation sous forme de chaîne équivalente.

ToString(Char)

Convertit le caractère Unicode spécifié en sa représentation sous forme de chaîne équivalente.

ToString(IFormatProvider)

Convertit la valeur de cette instance en représentation sous forme de chaîne équivalente à l'aide des informations de format propres à la culture spécifiées.

ToUpper(Char)

Convertit la valeur d'un caractère Unicode en son équivalent en majuscule.

ToUpper(Char, CultureInfo)

Convertit la valeur d'un caractère Unicode spécifié en son équivalent en majuscule à l'aide des informations de mise en forme spécifiques à la culture.

ToUpperInvariant(Char)

Convertit la valeur d'un caractère Unicode en son équivalent en majuscule à l'aide des règles de casse de la culture dite indifférente.

TryParse(String, Char)

Convertit la valeur de la chaîne spécifiée en caractère Unicode équivalent. Un code de retour indique si la conversion a réussi ou a échoué.

Implémentations d’interfaces explicites

IBinaryInteger<Char>.GetByteCount()

Obtient le nombre d’octets qui seront écrits dans le cadre de TryWriteLittleEndian(Span<Byte>, Int32).

IBinaryInteger<Char>.GetShortestBitLength()

Obtient la longueur, en bits, de la représentation complémentaire des deux plus courtes de la valeur actuelle.

IBinaryInteger<Char>.TryWriteBigEndian(Span<Byte>, Int32)

Tente d’écrire la valeur actuelle, au format big-endian, dans une étendue donnée.

IBinaryInteger<Char>.TryWriteLittleEndian(Span<Byte>, Int32)

Tente d’écrire la valeur actuelle, au format little-endian, dans une étendue donnée.

IComparable.CompareTo(Object)

Compare l'instance actuelle à un autre objet du même type et retourne un entier qui indique si l'instance actuelle précède ou suit un autre objet ou se trouve à la même position que ce dernier dans l'ordre de tri.

IConvertible.GetTypeCode()

Retourne le TypeCode de cette instance.

IConvertible.ToBoolean(IFormatProvider)

Remarque Cette conversion n’est pas prise en charge. Toute tentative de ce type lève InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToByte(IFormatProvider).

IConvertible.ToChar(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToChar(IFormatProvider).

IConvertible.ToDateTime(IFormatProvider)

Remarque Cette conversion n’est pas prise en charge. Toute tentative de ce type lève InvalidCastException.

IConvertible.ToDecimal(IFormatProvider)

Remarque Cette conversion n’est pas prise en charge. Toute tentative de ce type lève InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Remarque Cette conversion n’est pas prise en charge. Toute tentative de ce type lève InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToInt16(IFormatProvider).

IConvertible.ToInt32(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToInt32(IFormatProvider).

IConvertible.ToInt64(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToInt64(IFormatProvider).

IConvertible.ToSByte(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToSByte(IFormatProvider).

IConvertible.ToSingle(IFormatProvider)

Remarque Cette conversion n’est pas prise en charge. Toute tentative de ce type lève InvalidCastException.

IConvertible.ToString(IFormatProvider)

Convertit la valeur de cette instance en une chaîne équivalente, en utilisant les informations de mise en forme propres à la culture spécifiées.

IConvertible.ToType(Type, IFormatProvider)

Pour obtenir une description de ce membre, consultez ToType(Type, IFormatProvider).

IConvertible.ToUInt16(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToUInt16(IFormatProvider).

IConvertible.ToUInt32(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToUInt32(IFormatProvider).

IConvertible.ToUInt64(IFormatProvider)

Pour obtenir une description de ce membre, consultez ToUInt64(IFormatProvider).

IFormattable.ToString(String, IFormatProvider)

Met en forme la valeur de l’instance actuelle en utilisant le format spécifié.

ISpanFormattable.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

Tente de mettre en forme la valeur de l’instance actuelle dans l’étendue de caractères fournie.

S’applique à

Cohérence de thread

Tous les membres de ce type sont thread safe. Les membres qui semblent modifier l’état de l’instance retournent en fait une nouvelle instance initialisée avec la nouvelle valeur. Comme pour tout autre type, la lecture et l’écriture dans une variable partagée qui contient une instance de ce type doivent être protégées par un verrou pour garantir la sécurité du thread.

Voir aussi