StringInfo.GetTextElementEnumerator Metodo

Definizione

Restituisce un enumeratore che consente di scorrere gli elementi di testo di una stringa.

Overload

GetTextElementEnumerator(String)

Restituisce un enumeratore che consente di scorrere gli elementi di testo dell'intera stringa.

GetTextElementEnumerator(String, Int32)

Restituisce un enumeratore che consente di scorrere gli elementi di testo della stringa, a partire dall'indice specificato.

GetTextElementEnumerator(String)

Restituisce un enumeratore che consente di scorrere gli elementi di testo dell'intera stringa.

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

Parametri

str
String

Stringa da scorrere.

Restituisce

TextElementEnumerator

Oggetto TextElementEnumerator per l'intera stringa.

Eccezioni

str è null.

Esempio

Nel codice riportato di seguito viene illustrata la chiamata al metodo GetTextElementEnumerator. Questo esempio fa parte di un esempio più ampio fornito per 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

Commenti

.NET definisce un elemento di testo come unità di testo visualizzata come singolo carattere, ad esempio un grafo. Un elemento di testo può essere un carattere di base, una coppia di surrogati o una sequenza di caratteri combinato. Lo standard Unicode definisce una coppia di surrogati come rappresentazione di caratteri codificati per un singolo carattere astratto costituito da una sequenza di due unità di codice, dove la prima unità della coppia è un surrogato alto e il secondo è un surrogato basso. Lo standard Unicode definisce una sequenza di caratteri di combinazione come combinazione di un carattere di base e uno o più caratteri di combinazione. Una coppia di surrogati può rappresentare un carattere di base o una combinazione di caratteri.

L'enumeratore dell'elemento di testo viene usato solo per leggere i dati nella stringa. non può modificare la stringa sottostante. L'enumeratore non ha accesso esclusivo alla stringa.

L'enumeratore è in uno stato non valido se è posizionato prima del primo elemento di testo nella stringa o dopo l'ultimo elemento di testo nella stringa. Quando l'enumeratore si trova in uno stato non valido, Current la chiamata di genera un'eccezione.

Inizialmente, l'enumeratore viene posizionato prima del primo elemento di testo nella stringa. Anche il metodo Reset riporta l'enumeratore in questa posizione. Pertanto, dopo la creazione di un enumeratore o dopo la chiamata di , è necessario chiamare per far avanzare l'enumeratore al primo elemento di testo della stringa prima di leggere Reset MoveNext il valore di Current .

Current restituisce lo stesso oggetto finché non viene chiamato il metodo MoveNext o Reset.

Dopo aver passato la fine della stringa, l'enumeratore si trova nuovamente in uno stato non valido e la chiamata MoveNext a restituisce false . La Current chiamata di genera un'eccezione se l'ultima chiamata a ha MoveNext restituito false .

Vedi anche

Si applica a

GetTextElementEnumerator(String, Int32)

Restituisce un enumeratore che consente di scorrere gli elementi di testo della stringa, a partire dall'indice specificato.

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

Parametri

str
String

Stringa da scorrere.

index
Int32

Indice in base zero dal quale iniziare lo scorrimento.

Restituisce

TextElementEnumerator

Oggetto TextElementEnumerator per la stringa che parte da index.

Eccezioni

str è null.

index non è compreso nell'intervallo di indici validi per str.

Commenti

.NET definisce un elemento di testo come un'unità di testo visualizzata come singolo carattere, ad esempio un grafo. Un elemento di testo può essere un carattere di base, una coppia di surrogati o una sequenza di caratteri di combinazione. Lo standard Unicode definisce una coppia di surrogati come rappresentazione di caratteri codificati per un singolo carattere astratto costituito da una sequenza di due unità di codice, dove la prima unità della coppia è un surrogato elevato e la seconda è un surrogato basso. Lo standard Unicode definisce una sequenza di caratteri di combinazione come combinazione di un carattere di base e uno o più caratteri di combinazione. Una coppia di surrogati può rappresentare un carattere di base o un carattere di combinazione.

L'enumeratore dell'elemento di testo viene utilizzato solo per leggere i dati nella stringa. non può modificare la stringa sottostante. L'enumeratore non ha accesso esclusivo alla stringa.

L'enumeratore è in uno stato non valido se è posizionato prima del primo elemento di testo nella stringa o dopo l'ultimo elemento di testo nella stringa. Quando l'enumeratore si trova in uno stato non valido, Current la chiamata di genera un'eccezione.

Inizialmente, l'enumeratore viene posizionato prima del primo elemento di testo nella stringa. Anche il metodo Reset riporta l'enumeratore in questa posizione. Pertanto, dopo la creazione di un enumeratore o dopo la chiamata di , è necessario chiamare per far avanzare l'enumeratore al primo elemento di testo della stringa prima di leggere Reset MoveNext il valore di Current .

Current restituisce lo stesso oggetto finché non viene chiamato il metodo MoveNext o Reset.

Dopo aver passato la fine della stringa, l'enumeratore si trova nuovamente in uno stato non valido e la chiamata MoveNext a restituisce false . La Current chiamata di genera un'eccezione se l'ultima chiamata a ha MoveNext restituito false .

Vedi anche

Si applica a