Freigeben über


TextElementEnumerator-Klasse

Listet die Textelemente einer Zeichenfolge auf.

Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class TextElementEnumerator
    Implements IEnumerator
'Usage
Dim instance As TextElementEnumerator
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class TextElementEnumerator : IEnumerator
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class TextElementEnumerator : IEnumerator
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class TextElementEnumerator implements IEnumerator
SerializableAttribute 
ComVisibleAttribute(true) 
public class TextElementEnumerator implements IEnumerator

Hinweise

.NET Framework definiert ein Textelement als eine Texteinheit, die als einzelnes Zeichen, d. h. als Graphem, dargestellt wird. Ein Textelement kann ein Basiszeichen, ein Ersatzzeichenpaar oder eine Kombinationszeichenfolge sein. Der Unicode-Standard definiert ein Ersatzzeichenpaar als codierte Zeichendarstellung für ein einzelnes abstraktes Zeichen, das aus einer Folge von zwei Codeeinheiten besteht. Dabei stellt die erste Einheit des Paares das hohe Ersatzzeichen und die zweite Einheit das niedrige Ersatzzeichen dar. Der Unicode-Standard definiert eine Kombinationszeichenfolge als Kombination aus einem Basiszeichen und einem oder mehreren Kombinationszeichen. Ein Ersatzzeichenpaar kann ein Basiszeichen oder ein Kombinationszeichen darstellen. Weitere Informationen über Ersatzzeichenpaare und Kombinationszeichenfolgen finden Sie im Unicode-Standard unter http://www.unicode.org (nur auf Englisch verfügbar).

Textelementenumeratoren sind nur zum Lesen der Daten in einer Zeichenfolge vorgesehen. Die zugrunde liegende Zeichenfolge kann nicht mithilfe von Enumeratoren geändert werden.

Ein Enumerator verfügt nicht über exklusiven Zugriff auf die Zeichenfolge.

Beim Erstellen eines Enumerators wird ein Snapshot des aktuellen Zustands der Zeichenfolge aufgenommen. Wenn die Zeichenfolge geändert wird, indem z.°B. Textelemente hinzugefügt, geändert oder gelöscht werden, ist der Snapshot nicht mehr synchron, und der Enumerator löst eine InvalidOperationException aus. Zwei Enumeratoren, die zugleich für dieselbe Zeichenfolge erstellt werden, können über verschiedene Snapshots dieser Zeichenfolge verfügen.

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

Anfangs wird der Enumerator vor dem ersten Textelement in der Zeichenfolge positioniert. Reset positioniert den Enumerator ebenfalls dort. Nach dem Erstellen eines Enumerators oder nach dem Aufrufen der Reset-Methode muss daher ein Aufruf von MoveNext erfolgen, um den Enumerator vor dem Lesen des Werts von Current vor dem ersten Textelement der Zeichenfolge zu positionieren.

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

Wenn das Ende der Zeichenfolge überschritten wird, befindet sich der Enumerator erneut in einem ungültigen Zustand, und beim Aufruf von MoveNext wird false zurückgegeben. Ein Aufruf von Current löst eine Ausnahme aus, wenn beim letzten Aufruf von MoveNext der Wert false zurückgegeben wurde.

Beispiel

Im folgenden Codebeispiel werden die von TextElementEnumerator zurückgegebenen Werte dargestellt.

Imports System
Imports System.Globalization
Imports Microsoft.VisualBasic

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 'Main 

End Class 'SamplesTextElementEnumerator

'This code produces the following output.  The question marks take the place of high and low surrogates.
'
'Index   Current GetTextElement
'[0]:    ??      ??
'[2]:    a`      a`
'[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]:    a`      a`
[4]:           

*/
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]:    a`      a`
[4]:           

*/
import System.*;
import System.Globalization.*;

public class SamplesTextElementEnumerator
{
    public static void main(String[] args)
    {
        // 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}", 
                System.Convert.ToString(myTEE.get_ElementIndex()),
                System.Convert.ToString(myTEE.get_Current()),
                myTEE.GetTextElement());
        }
    } //main
} //SamplesTextElementEnumerator

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

Index   Current GetTextElement
[0]:    ??      ??
[2]:    a`      a`
[4]:                      

*/

Vererbungshierarchie

System.Object
  System.Globalization.TextElementEnumerator

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

TextElementEnumerator-Member
System.Globalization-Namespace
System.Collections.IEnumerator