Condividi tramite


StringInfo.GetTextElementEnumerator Metodo

Definizione

Restituisce un enumeratore che scorre gli elementi di testo di una stringa.

Overload

Nome Descrizione
GetTextElementEnumerator(String)

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

GetTextElementEnumerator(String, Int32)

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

GetTextElementEnumerator(String)

Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs

Restituisce un enumeratore che scorre 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.

Valori restituiti

Oggetto TextElementEnumerator per l'intera stringa.

Eccezioni

str è null.

Esempio

Nell'esempio seguente viene illustrata la chiamata al metodo GetTextElementEnumerator. Questo esempio fa parte di un esempio più ampio fornito per la StringInfo classe .

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 un'unità di testo visualizzata come un singolo carattere, ovvero un grafo. Un elemento di testo può essere un carattere di base, una coppia di surrogati o una sequenza di caratteri combinata. 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, in cui la prima unità della coppia è un surrogato elevato e la seconda è un surrogato basso. Lo standard Unicode definisce una sequenza di caratteri combinata come combinazione di un carattere di base e uno o più caratteri combinati. Una coppia di surrogati può rappresentare un carattere di base o un carattere combinato.

L'enumeratore di elementi 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 è in uno stato non valido, la chiamata Current genera un'eccezione.

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

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

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

Vedi anche

Si applica a

GetTextElementEnumerator(String, Int32)

Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs
Origine:
StringInfo.cs

Restituisce un enumeratore che scorre 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 in corrispondenza del quale iniziare l'iterazione.

Valori restituiti

Oggetto TextElementEnumerator per la stringa a partire 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 un singolo carattere, ovvero un grafo. Un elemento di testo può essere un carattere di base, una coppia di surrogati o una sequenza di caratteri combinata. 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, in cui la prima unità della coppia è un surrogato elevato e la seconda è un surrogato basso. Lo standard Unicode definisce una sequenza di caratteri combinata come combinazione di un carattere di base e uno o più caratteri combinati. Una coppia di surrogati può rappresentare un carattere di base o un carattere combinato.

L'enumeratore di elementi 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 è in uno stato non valido, la chiamata Current genera un'eccezione.

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

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

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

Vedi anche

Si applica a