Partager via


StringInfo.GetTextElementEnumerator Méthode

Définition

Retourne un énumérateur qui itère au sein des éléments de texte d'une chaîne.

Surcharges

GetTextElementEnumerator(String)

Retourne un énumérateur qui itère au sein des éléments de texte de l'ensemble de la chaîne.

GetTextElementEnumerator(String, Int32)

Retourne un énumérateur qui itère au sein des éléments de texte de la chaîne, en commençant à l'index spécifié.

GetTextElementEnumerator(String)

Source:
StringInfo.cs
Source:
StringInfo.cs
Source:
StringInfo.cs

Retourne un énumérateur qui itère au sein des éléments de texte de l'ensemble de la chaîne.

public:
 static System::Globalization::TextElementEnumerator ^ GetTextElementEnumerator(System::String ^ str);
public static System.Globalization.TextElementEnumerator GetTextElementEnumerator (string str);
static member GetTextElementEnumerator : string -> System.Globalization.TextElementEnumerator
Public Shared Function GetTextElementEnumerator (str As String) As TextElementEnumerator

Paramètres

str
String

Chaîne au sein de laquelle itérer.

Retours

TextElementEnumerator pour l'ensemble de la chaîne.

Exceptions

str a la valeur null.

Exemples

L'exemple suivant montre l'appel à la méthode GetTextElementEnumerator. Cet exemple fait partie d’un exemple plus grand fourni pour la StringInfo classe .

using namespace System;
using namespace System::Text;
using namespace System::Globalization;


// Show how to enumerate each real character (honoring surrogates)
// in a string.

void EnumTextElements(String^ combiningChars)
{
    // This StringBuilder holds the output results.
    StringBuilder^ sb = gcnew StringBuilder();

    // Use the enumerator returned from GetTextElementEnumerator
    // method to examine each real character.
    TextElementEnumerator^ charEnum =
        StringInfo::GetTextElementEnumerator(combiningChars);
    while (charEnum->MoveNext())
    {
        sb->AppendFormat("Character at index {0} is '{1}'{2}", 
            charEnum->ElementIndex, charEnum->GetTextElement(), 
            Environment::NewLine);
    }

    // Show the results.
    Console::WriteLine("Result of GetTextElementEnumerator:");
    Console::WriteLine(sb);
}


// Show how to discover the index of each real character
// (honoring surrogates) in a string.

void EnumTextElementIndexes(String^ combiningChars)
{
    // This StringBuilder holds the output results.
    StringBuilder^ sb = gcnew StringBuilder();

    // Use the ParseCombiningCharacters method to
    // get the index of each real character in the string.
    array <int>^ textElemIndex =
        StringInfo::ParseCombiningCharacters(combiningChars);

    // Iterate through each real character showing the character
    // and the index where it was found.
    for (int i = 0; i < textElemIndex->Length; i++)
    {
        sb->AppendFormat("Character {0} starts at index {1}{2}",
            i, textElemIndex[i], Environment::NewLine);
    }

    // Show the results.
    Console::WriteLine("Result of ParseCombiningCharacters:");
    Console::WriteLine(sb);
}

int main()
{

    // The string below contains combining characters.
    String^ combiningChars = L"a\u0304\u0308bc\u0327";

    // Show each 'character' in the string.
    EnumTextElements(combiningChars);

    // Show the index in the string where each 'character' starts.
    EnumTextElementIndexes(combiningChars);

};

// This code produces the following output.
//
// Result of GetTextElementEnumerator:
// Character at index 0 is 'a-"'
// Character at index 3 is 'b'
// Character at index 4 is 'c,'
//
// Result of ParseCombiningCharacters:
// Character 0 starts at index 0
// Character 1 starts at index 3
// Character 2 starts at index 4
using System;
using System.Text;
using System.Globalization;

public sealed class App {
   static void Main() {
      // The string below contains combining characters.
      String s = "a\u0304\u0308bc\u0327";

      // Show each 'character' in the string.
      EnumTextElements(s);

      // Show the index in the string where each 'character' starts.
      EnumTextElementIndexes(s);
   }

   // Show how to enumerate each real character (honoring surrogates) in a string.
   static void EnumTextElements(String s) {
      // This StringBuilder holds the output results.
      StringBuilder sb = new StringBuilder();

      // Use the enumerator returned from GetTextElementEnumerator
      // method to examine each real character.
      TextElementEnumerator charEnum = StringInfo.GetTextElementEnumerator(s);
      while (charEnum.MoveNext()) {
         sb.AppendFormat(
           "Character at index {0} is '{1}'{2}",
           charEnum.ElementIndex, charEnum.GetTextElement(),
           Environment.NewLine);
      }

      // Show the results.
      Console.WriteLine("Result of GetTextElementEnumerator:");
      Console.WriteLine(sb);
   }

   // Show how to discover the index of each real character (honoring surrogates) in a string.
   static void EnumTextElementIndexes(String s) {
      // This StringBuilder holds the output results.
      StringBuilder sb = new StringBuilder();

      // Use the ParseCombiningCharacters method to
      // get the index of each real character in the string.
      Int32[] textElemIndex = StringInfo.ParseCombiningCharacters(s);

      // Iterate through each real character showing the character and the index where it was found.
      for (Int32 i = 0; i < textElemIndex.Length; i++) {
         sb.AppendFormat(
            "Character {0} starts at index {1}{2}",
            i, textElemIndex[i], Environment.NewLine);
      }

      // Show the results.
      Console.WriteLine("Result of ParseCombiningCharacters:");
      Console.WriteLine(sb);
   }
}

// This code produces the following output:
//
// Result of GetTextElementEnumerator:
// Character at index 0 is 'ā̈'
// Character at index 3 is 'b'
// Character at index 4 is 'ç'
//
// Result of ParseCombiningCharacters:
// Character 0 starts at index 0
// Character 1 starts at index 3
// Character 2 starts at index 4
Imports System.Text
Imports System.Globalization

Public Module Example
   Public Sub Main()
      ' The string below contains combining characters.
      Dim s As String = "a" + ChrW(&h0304) + ChrW(&h0308) + "bc" + ChrW(&h0327)

      ' Show each 'character' in the string.
      EnumTextElements(s)

      ' Show the index in the string where each 'character' starts.
      EnumTextElementIndexes(s)
   End Sub

   ' Show how to enumerate each real character (honoring surrogates) in a string.
   Sub EnumTextElements(s As String)
      ' This StringBuilder holds the output results.
      Dim sb As New StringBuilder()

      ' Use the enumerator returned from GetTextElementEnumerator 
      ' method to examine each real character.
      Dim charEnum As TextElementEnumerator = StringInfo.GetTextElementEnumerator(s)
      Do While charEnum.MoveNext()
         sb.AppendFormat("Character at index {0} is '{1}'{2}",
                         charEnum.ElementIndex, 
                         charEnum.GetTextElement(),
                         Environment.NewLine)
      Loop

      ' Show the results.
      Console.WriteLine("Result of GetTextElementEnumerator:")
      Console.WriteLine(sb)
   End Sub

   ' Show how to discover the index of each real character (honoring surrogates) in a string.
   Sub EnumTextElementIndexes(s As String)
      ' This StringBuilder holds the output results.
      Dim sb As New StringBuilder()

      ' Use the ParseCombiningCharacters method to 
      ' get the index of each real character in the string.
      Dim textElemIndex() As Integer = StringInfo.ParseCombiningCharacters(s)

      ' Iterate through each real character showing the character and the index where it was found.
      For i As Int32 = 0 To textElemIndex.Length - 1
         sb.AppendFormat("Character {0} starts at index {1}{2}",
                         i, textElemIndex(i), Environment.NewLine)
      Next

      ' Show the results.
      Console.WriteLine("Result of ParseCombiningCharacters:")
      Console.WriteLine(sb)
   End Sub
End Module
' The example displays the following output:
'
'       Result of GetTextElementEnumerator:
'       Character at index 0 is 'ā̈'
'       Character at index 3 is 'b'
'       Character at index 4 is 'ç'
'       
'       Result of ParseCombiningCharacters:
'       Character 0 starts at index 0
'       Character 1 starts at index 3
'       Character 2 starts at index 4

Remarques

.NET définit un élément de texte comme une unité de texte affichée sous la forme d’un seul caractère, c’est-à-dire un graphème. Un élément de texte peut être un caractère de base, une paire de substitution ou une séquence de caractères combinant. La norme Unicode définit une paire de substitution en tant que représentation codée d’un caractère abstrait unique qui se compose d’une séquence de deux unités de code, où la première unité de la paire est un substitut élevé et la seconde est un substitut faible. La norme Unicode définit une séquence de caractères de combinaison en tant que combinaison d’un caractère de base et d’un ou plusieurs caractères de combinaison. Une paire de substitution peut représenter un caractère de base ou un caractère de combinaison.

L’énumérateur d’éléments de texte est utilisé uniquement pour lire les données dans la chaîne ; elle ne peut pas modifier la chaîne sous-jacente. L’énumérateur n’a pas d’accès exclusif à la chaîne.

L’énumérateur n’est pas dans un état non valide s’il est positionné avant le premier élément de texte de la chaîne ou après le dernier élément de texte de la chaîne. Lorsque l’énumérateur est dans un état non valide, l’appel Current lève une exception.

Initialement, l’énumérateur est positionné avant le premier élément de texte de la chaîne. Reset replace également l'énumérateur à cette position. Par conséquent, après la création d’un énumérateur ou l’appel d’un Reset énumérateur, MoveNext doit être appelé pour avancer l’énumérateur vers le premier élément de texte de la chaîne avant de lire la valeur de Current.

Current retourne le même objet tant que MoveNext ou Reset n'est pas appelé.

Une fois la fin de la chaîne passée, l’énumérateur est à nouveau dans un état non valide et l’appel MoveNext retourne false. L’appel Current lève une exception si le dernier appel à MoveNext retourné false.

Voir aussi

S’applique à

GetTextElementEnumerator(String, Int32)

Source:
StringInfo.cs
Source:
StringInfo.cs
Source:
StringInfo.cs

Retourne un énumérateur qui itère au sein des éléments de texte de la chaîne, en commençant à l'index spécifié.

public:
 static System::Globalization::TextElementEnumerator ^ GetTextElementEnumerator(System::String ^ str, int index);
public static System.Globalization.TextElementEnumerator GetTextElementEnumerator (string str, int index);
static member GetTextElementEnumerator : string * int -> System.Globalization.TextElementEnumerator
Public Shared Function GetTextElementEnumerator (str As String, index As Integer) As TextElementEnumerator

Paramètres

str
String

Chaîne au sein de laquelle itérer.

index
Int32

Index de base zéro au niveau duquel commencer l'itération.

Retours

TextElementEnumerator pour la chaîne commençant à index.

Exceptions

str a la valeur null.

index n’est pas compris dans la plage d’index valides pour str.

Remarques

.NET définit un élément de texte comme une unité de texte affichée sous la forme d’un seul caractère, c’est-à-dire un graphème. Un élément de texte peut être un caractère de base, une paire de substitution ou une séquence de caractères combinant. La norme Unicode définit une paire de substitution en tant que représentation codée d’un caractère abstrait unique qui se compose d’une séquence de deux unités de code, où la première unité de la paire est un substitut élevé et la seconde est un substitut faible. La norme Unicode définit une séquence de caractères de combinaison en tant que combinaison d’un caractère de base et d’un ou plusieurs caractères de combinaison. Une paire de substitution peut représenter un caractère de base ou un caractère de combinaison.

L’énumérateur d’éléments de texte est utilisé uniquement pour lire les données dans la chaîne ; elle ne peut pas modifier la chaîne sous-jacente. L’énumérateur n’a pas d’accès exclusif à la chaîne.

L’énumérateur n’est pas dans un état non valide s’il est positionné avant le premier élément de texte de la chaîne ou après le dernier élément de texte de la chaîne. Lorsque l’énumérateur est dans un état non valide, l’appel Current lève une exception.

Initialement, l’énumérateur est positionné avant le premier élément de texte de la chaîne. Reset replace également l'énumérateur à cette position. Par conséquent, après la création d’un énumérateur ou l’appel d’un Reset énumérateur, MoveNext doit être appelé pour avancer l’énumérateur vers le premier élément de texte de la chaîne avant de lire la valeur de Current.

Current retourne le même objet tant que MoveNext ou Reset n'est pas appelé.

Une fois la fin de la chaîne passée, l’énumérateur est à nouveau dans un état non valide et l’appel MoveNext retourne false. L’appel Current lève une exception si le dernier appel à MoveNext retourné false.

Voir aussi

S’applique à