StringInfo.GetTextElementEnumerator Methode

Definition

Gibt einen Enumerator zurück, der die Textelemente einer Zeichenfolge durchläuft.

Überlädt

GetTextElementEnumerator(String)

Gibt einen Enumerator zurück, der die Textelemente der gesamten Zeichenfolge durchläuft.

GetTextElementEnumerator(String, Int32)

Gibt einen Enumerator zurück, der die Textelemente der Zeichenfolge beginnend am angegebenen Index durchläuft.

GetTextElementEnumerator(String)

Gibt einen Enumerator zurück, der die Textelemente der gesamten Zeichenfolge durchläuft.

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

Parameter

str
String

Die Zeichenfolge, die durchlaufen werden soll.

Gibt zurück

Ein TextElementEnumerator für die gesamte Zeichenfolge.

Ausnahmen

str ist null.

Beispiele

Im folgenden Beispiel wird das Aufrufen der GetTextElementEnumerator-Methode veranschaulicht. Dieses Beispiel ist Teil eines größeren Beispiels, das für die StringInfo -Klasse bereitgestellt wird.

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

Hinweise

.NET definiert ein Textelement als Texteinheit, die als einzelnes Zeichen angezeigt wird, d. h. als Graphem. Ein Textelement kann ein Basiszeichen, ein Ersatzzeichenpaar oder eine kombinierte Zeichenfolge sein. Der Unicode-Standard definiert ein Ersatzzeichenpaar als codierte Zeichendarstellung für ein einzelnes abstraktes Zeichen, das aus einer Sequenz von zwei Codeeinheiten besteht, wobei die erste Einheit des Paars ein hohes Ersatzzeichen und die zweite ein niedriges Ersatzzeichen ist. Der Unicode-Standard definiert eine kombinationsbasierte Zeichenfolge als Kombination aus einem Basiszeichen und einem oder mehreren kombinationsbasierten Zeichen. Ein Ersatzzeichenpaar kann ein Basiszeichen oder ein kombinierendes Zeichen darstellen.

Der Textelement-Enumerator wird nur verwendet, um Daten in der Zeichenfolge zu lesen. Die zugrunde liegende Zeichenfolge kann nicht geändert werden. Der Enumerator hat keinen exklusiven Zugriff auf die Zeichenfolge.

Der Enumerator befindet sich in einem ungültigen Zustand, wenn er vor dem ersten Textelement in der Zeichenfolge oder nach dem letzten Textelement in der Zeichenfolge positioniert ist. Wenn sich der Enumerator in einem ungültigen Zustand befindet, löst der Aufruf Current eine Ausnahme aus.

Zunächst wird der Enumerator vor dem ersten Textelement in der Zeichenfolge positioniert. Reset setzt den Enumerator ebenfalls auf diese Position zurück. Daher muss nach dem Erstellen oder Aufrufen Reset eines Enumerators aufgerufen werden, MoveNext um den Enumerator auf das erste Textelement der Zeichenfolge vor dem Lesen des Werts von Currentzu schieben.

Current gibt solange dasselbe Objekt zurück, bis MoveNext oder Reset aufgerufen wird.

Nachdem das Ende der Zeichenfolge übergeben wurde, befindet sich der Enumerator erneut in einem ungültigen Zustand, und der Aufruf MoveNext von gibt zurück false. Der Aufruf Current löst eine Ausnahme aus, wenn der letzte Aufruf von MoveNext zurückgegeben wurde false.

Weitere Informationen

Gilt für:

GetTextElementEnumerator(String, Int32)

Gibt einen Enumerator zurück, der die Textelemente der Zeichenfolge beginnend am angegebenen Index durchläuft.

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

Parameter

str
String

Die Zeichenfolge, die durchlaufen werden soll.

index
Int32

Der nullbasierte Index, an dem das Durchlaufen begonnen werden soll.

Gibt zurück

Ein TextElementEnumerator für die am index beginnende Zeichenfolge.

Ausnahmen

str ist null.

index liegt außerhalb des Bereichs der gültigen Indizes für str.

Hinweise

.NET definiert ein Textelement als Texteinheit, die als einzelnes Zeichen angezeigt wird, d. h. als Graphem. Ein Textelement kann ein Basiszeichen, ein Ersatzzeichenpaar oder eine kombinierte Zeichenfolge sein. Der Unicode-Standard definiert ein Ersatzzeichenpaar als codierte Zeichendarstellung für ein einzelnes abstraktes Zeichen, das aus einer Sequenz von zwei Codeeinheiten besteht, wobei die erste Einheit des Paars ein hohes Ersatzzeichen und die zweite ein niedriges Ersatzzeichen ist. Der Unicode-Standard definiert eine kombinationsbasierte Zeichenfolge als Kombination aus einem Basiszeichen und einem oder mehreren kombinationsbasierten Zeichen. Ein Ersatzzeichenpaar kann ein Basiszeichen oder ein kombinierendes Zeichen darstellen.

Der Textelement-Enumerator wird nur verwendet, um Daten in der Zeichenfolge zu lesen. Die zugrunde liegende Zeichenfolge kann nicht geändert werden. Der Enumerator hat keinen exklusiven Zugriff auf die Zeichenfolge.

Der Enumerator befindet sich in einem ungültigen Zustand, wenn er vor dem ersten Textelement in der Zeichenfolge oder nach dem letzten Textelement in der Zeichenfolge positioniert ist. Wenn sich der Enumerator in einem ungültigen Zustand befindet, löst der Aufruf Current eine Ausnahme aus.

Zunächst wird der Enumerator vor dem ersten Textelement in der Zeichenfolge positioniert. Reset setzt den Enumerator ebenfalls auf diese Position zurück. Daher muss nach dem Erstellen oder Aufrufen Reset eines Enumerators aufgerufen werden, MoveNext um den Enumerator auf das erste Textelement der Zeichenfolge vor dem Lesen des Werts von Currentzu schieben.

Current gibt solange dasselbe Objekt zurück, bis MoveNext oder Reset aufgerufen wird.

Nachdem das Ende der Zeichenfolge übergeben wurde, befindet sich der Enumerator erneut in einem ungültigen Zustand, und der Aufruf MoveNext von gibt zurück false. Der Aufruf Current löst eine Ausnahme aus, wenn der letzte Aufruf von MoveNext zurückgegeben wurde false.

Weitere Informationen

Gilt für: