Compartilhar via


StringInfo.GetTextElementEnumerator Método

Definição

Retorna um enumerador que itera por meio dos elementos de texto de uma cadeia de caracteres.

Sobrecargas

GetTextElementEnumerator(String)

Retorna um enumerador que itera pelos elementos de texto de toda a cadeia de caracteres.

GetTextElementEnumerator(String, Int32)

Retorna um enumerador que itera por meio dos elementos de texto da cadeia de caracteres, começando no índice especificado.

GetTextElementEnumerator(String)

Origem:
StringInfo.cs
Origem:
StringInfo.cs
Origem:
StringInfo.cs

Retorna um enumerador que itera pelos elementos de texto de toda a cadeia de caracteres.

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

Parâmetros

str
String

A cadeia de caracteres a iterar.

Retornos

Um TextElementEnumerator para toda a cadeia de caracteres.

Exceções

str é null.

Exemplos

O exemplo a seguir demonstra a chamada do GetTextElementEnumerator método . Este exemplo faz parte de um exemplo maior fornecido para a 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

Comentários

O .NET define um elemento de texto como uma unidade de texto que é exibida como um único caractere, ou seja, um grafeme. Um elemento de texto pode ser um caractere base, um par alternativo ou uma sequência de caracteres de combinação. O Padrão Unicode define um par alternativo como uma representação de caractere codificado para um único caractere abstrato que consiste em uma sequência de duas unidades de código, em que a primeira unidade do par é um substituto alto e o segundo é um substituto baixo. O Padrão Unicode define uma sequência de caracteres de combinação como uma combinação de um caractere base e um ou mais caracteres de combinação. Um par alternativo pode representar um caractere base ou um caractere de combinação.

O enumerador de elemento de texto é usado apenas para ler dados na cadeia de caracteres; ele não pode modificar a cadeia de caracteres subjacente. O enumerador não tem acesso exclusivo à cadeia de caracteres.

O enumerador estará em um estado inválido se ele estiver posicionado antes do primeiro elemento de texto na cadeia de caracteres ou após o último elemento de texto na cadeia de caracteres. Quando o enumerador está em um estado inválido, a chamada Current gera uma exceção.

Inicialmente, o enumerador é posicionado antes do primeiro elemento de texto na cadeia de caracteres. Reset também traz o enumerador de volta para essa posição. Portanto, depois que um enumerador é criado ou depois Reset de chamado, MoveNext deve ser chamado para avançar o enumerador para o primeiro elemento de texto da cadeia de caracteres antes de ler o valor de Current.

Current retorna o mesmo objeto até MoveNext ou Reset ser chamado.

Depois que o final da cadeia de caracteres é passado, o enumerador está novamente em um estado inválido e a chamada MoveNext retorna false. A chamada Current gera uma exceção se a última chamada para MoveNext retornada false.

Confira também

Aplica-se a

GetTextElementEnumerator(String, Int32)

Origem:
StringInfo.cs
Origem:
StringInfo.cs
Origem:
StringInfo.cs

Retorna um enumerador que itera por meio dos elementos de texto da cadeia de caracteres, começando no índice especificado.

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

Parâmetros

str
String

A cadeia de caracteres a iterar.

index
Int32

O índice baseado em zero no qual se começa a iterar.

Retornos

Um TextElementEnumerator para a cadeia de caracteres que começa em index.

Exceções

str é null.

index está fora do intervalo de índices válidos para str.

Comentários

O .NET define um elemento de texto como uma unidade de texto que é exibida como um único caractere, ou seja, um grafeme. Um elemento de texto pode ser um caractere base, um par alternativo ou uma sequência de caracteres de combinação. O Padrão Unicode define um par alternativo como uma representação de caractere codificado para um único caractere abstrato que consiste em uma sequência de duas unidades de código, em que a primeira unidade do par é um substituto alto e o segundo é um substituto baixo. O Padrão Unicode define uma sequência de caracteres de combinação como uma combinação de um caractere base e um ou mais caracteres de combinação. Um par alternativo pode representar um caractere base ou um caractere de combinação.

O enumerador de elemento de texto é usado apenas para ler dados na cadeia de caracteres; ele não pode modificar a cadeia de caracteres subjacente. O enumerador não tem acesso exclusivo à cadeia de caracteres.

O enumerador estará em um estado inválido se ele estiver posicionado antes do primeiro elemento de texto na cadeia de caracteres ou após o último elemento de texto na cadeia de caracteres. Quando o enumerador está em um estado inválido, a chamada Current gera uma exceção.

Inicialmente, o enumerador é posicionado antes do primeiro elemento de texto na cadeia de caracteres. Reset também traz o enumerador de volta para essa posição. Portanto, depois que um enumerador é criado ou depois Reset de chamado, MoveNext deve ser chamado para avançar o enumerador para o primeiro elemento de texto da cadeia de caracteres antes de ler o valor de Current.

Current retorna o mesmo objeto até MoveNext ou Reset ser chamado.

Depois que o final da cadeia de caracteres é passado, o enumerador está novamente em um estado inválido e a chamada MoveNext retorna false. A chamada Current gera uma exceção se a última chamada para MoveNext retornada false.

Confira também

Aplica-se a