TextElementEnumerator Classe

Definição

Enumera os elementos do texto de uma cadeia de caracteres.

public ref class TextElementEnumerator : System::Collections::IEnumerator
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class TextElementEnumerator : System.Collections.IEnumerator
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TextElementEnumerator = class
    interface IEnumerator
Public Class TextElementEnumerator
Implements IEnumerator
Herança
TextElementEnumerator
Atributos
Implementações

Exemplos

O exemplo a seguir usa a TextElementEnumerator classe para enumerar os elementos de texto de uma cadeia de caracteres.

using namespace System;
using namespace System::Globalization;
int main()
{

   // Creates and initializes a String containing the following:
   //   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
   //   - a combining character sequence (the Latin small letter S"a" followed by the combining grave accent)
   //   - a base character (the ligature S"")
   String^ myString = L"\xD800\xDC00"
   L"a\u0300\u00C6";

   // Creates and initializes a TextElementEnumerator for myString.
   TextElementEnumerator^ myTEE = StringInfo::GetTextElementEnumerator( myString );

   // Displays the values returned by ElementIndex, Current and GetTextElement.
   // Current and GetTextElement return a String* containing the entire text element.
   Console::WriteLine( "Index\tCurrent\tGetTextElement" );
   myTEE->Reset();
   while ( myTEE->MoveNext() )
      Console::WriteLine( "[{0}]:\t {1}\t {2}", myTEE->ElementIndex, myTEE->Current, myTEE->GetTextElement() );
}

/*
This code produces the following output.  The question marks take the place of high and low surrogates.

Index   Current GetTextElement
[0]:    𐀀       𐀀
[2]:    à       à
[4]:    Æ       Æ

*/
using System;
using System.Globalization;

public class SamplesTextElementEnumerator  {

   public static void Main()  {

      // Creates and initializes a String containing the following:
      //   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
      //   - a combining character sequence (the Latin small letter "a" followed by the combining grave accent)
      //   - a base character (the ligature "")
      String myString = "\uD800\uDC00\u0061\u0300\u00C6";

      // Creates and initializes a TextElementEnumerator for myString.
      TextElementEnumerator myTEE = StringInfo.GetTextElementEnumerator( myString );

      // Displays the values returned by ElementIndex, Current and GetTextElement.
      // Current and GetTextElement return a string containing the entire text element.
      Console.WriteLine( "Index\tCurrent\tGetTextElement" );
      myTEE.Reset();
      while (myTEE.MoveNext())  {
         Console.WriteLine( "[{0}]:\t{1}\t{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement() );
      }
   }
}

/*
This code produces the following output.  The question marks take the place of high and low surrogates.

Index   Current GetTextElement
[0]:    𐀀       𐀀
[2]:    à       à
[4]:    Æ       Æ

*/
Imports System.Globalization

Public Class SamplesTextElementEnumerator

   Public Shared Sub Main()

      ' Creates and initializes a String containing the following:
      '   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
      '   - a combining character sequence (the Latin small letter "a" followed by the combining grave accent)
      '   - a base character (the ligature "")
      Dim myString As String = ChrW(&HD800) & ChrW(&HDC00) & ChrW(&H0061) & ChrW(&H0300) & ChrW(&H00C6)

      ' Creates and initializes a TextElementEnumerator for myString.
      Dim myTEE As TextElementEnumerator = StringInfo.GetTextElementEnumerator( myString )

      ' Displays the values returned by ElementIndex, Current and GetTextElement.
      ' Current and GetTextElement return a string containing the entire text element.
      Console.WriteLine("Index" + ControlChars.Tab + "Current" + ControlChars.Tab + "GetTextElement")
      myTEE.Reset()
      While myTEE.MoveNext()
         Console.WriteLine("[{0}]:" + ControlChars.Tab + "{1}" + ControlChars.Tab + "{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement())
      End While

   End Sub

End Class

'This code produces the following output.  The question marks take the place of high and low surrogates.
'
'Index   Current GetTextElement
'[0]:    𐀀       𐀀
'[2]:    à       à
'[4]:    Æ       Æ

Comentários

O .NET Framework 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 qualquer um dos seguintes:

  • Um caractere base, que é representado como um único Char valor. Por exemplo, LATIN CAPITAL LETTER A (U+0041) e LATIN SMALL LETTER AE (U+00E6) são caracteres base.

  • Uma sequência de caracteres combinada, que consiste em um caractere base e um ou mais caracteres de combinação. Por exemplo, por exemplo, LATIN CAPITAL LETTER A (U+0041) seguido por COMBINING MACRON (U+0304) é uma sequência de caracteres combinada.

  • Pares alternativos, que o Padrão Unicode define como uma representação de caractere codificado para um único caractere abstrato que consiste em uma sequência de duas unidades de código: um substituto alto e um substituto baixo. Pares alternativos são usados para representar caracteres fora do Plano Multilíngue Básico unicode como caracteres codificados em UTF-16. Por exemplo, GOTHIC LETTER SAUIL (U+10343) é representado na codificação UTF-16 como um substituto alto cujo valor é 0xD800 e um substituto baixo cujo valor é 0xDF43. Um par substituto pode representar um caractere base ou um caractere de combinação.

A TextElementEnumerator classe permite que você trabalhe com os elementos de texto em uma cadeia de caracteres em vez de com objetos únicos Char .

Você cria uma instância de um TextElementEnumerator objeto que representa uma cadeia de caracteres específica passando a cadeia de caracteres para o StringInfo.GetTextElementEnumerator método. Isso retorna um enumerador posicionado antes do primeiro elemento de texto na cadeia de caracteres. Chamar o Reset método também traz o enumerador de volta para essa posição. Como isso representa um estado inválido, você deve chamar MoveNext para avançar o enumerador para o primeiro elemento de texto da cadeia de caracteres antes de ler o valor da Current propriedade para retornar o elemento de texto atual.

Ao trabalhar com um TextElementEnumerator objeto, você é responsável por posicionar o enumerador. A Current propriedade retorna o mesmo elemento de texto até você chamar um MoveNext ou Reset. O enumerador estará em um estado inválido se ele for posicionado antes do primeiro elemento de texto ou depois do último elemento de texto na cadeia de caracteres. Quando o enumerador está em um estado inválido, tentar recuperar o valor da Current propriedade gera uma exceção. Você pode determinar se o enumerador está em um estado inválido testando se o valor retornado da MoveNext propriedade é false.

O TextElementEnumerator objeto representa um instantâneo do estado atual de uma variável de cadeia de caracteres ou literal de cadeia de caracteres no momento em que o TextElementEnumerator objeto é instanciado. Observe que:

  • Enumeradores de elemento de texto só podem ser usados para ler dados em uma cadeia de caracteres. Eles não podem modificar a cadeia de caracteres subjacente.

  • Um enumerador não tem acesso exclusivo à cadeia de caracteres que ele representa. Uma variável de cadeia de caracteres pode ser modificada após a criação do enumerador.

  • Um TextElementEnumerator objeto enumera os elementos de texto presentes na cadeia de caracteres no momento em que o TextElementEnumerator objeto foi instanciado. Ele não refletirá nenhuma alteração subsequente na variável de cadeia de caracteres se essa variável for modificada posteriormente.

  • Como a TextElementEnumerator classe não substitui Object.Equals, dois TextElementEnumerator objetos que representam a mesma cadeia de caracteres serão considerados desiguais.

Propriedades

Current

Obtém o elemento de texto atual na cadeia de caracteres.

ElementIndex

Obtém o índice do elemento de texto em que o enumerador está posicionado atualmente.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetTextElement()

Obtém o elemento de texto atual na cadeia de caracteres.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MoveNext()

Avança o enumerador para o próximo elemento de texto da cadeia de caracteres.

Reset()

Define o enumerador com sua posição inicial, que é antes do primeiro elemento de texto na cadeia de caracteres.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também