Udostępnij za pośrednictwem


StringInfo.GetTextElementEnumerator Metoda

Definicja

Zwraca moduł wyliczający, który iteruje elementy tekstowe ciągu.

Przeciążenia

GetTextElementEnumerator(String)

Zwraca moduł wyliczający, który iteruje elementy tekstowe całego ciągu.

GetTextElementEnumerator(String, Int32)

Zwraca moduł wyliczający, który iteruje elementy tekstowe ciągu, zaczynając od określonego indeksu.

GetTextElementEnumerator(String)

Źródło:
StringInfo.cs
Źródło:
StringInfo.cs
Źródło:
StringInfo.cs

Zwraca moduł wyliczający, który iteruje elementy tekstowe całego ciągu.

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

Parametry

str
String

Ciąg do iterowania.

Zwraca

A TextElementEnumerator dla całego ciągu.

Wyjątki

str to null.

Przykłady

W poniższym przykładzie pokazano wywołanie GetTextElementEnumerator metody . Ten przykład jest częścią większego przykładu udostępnionego StringInfo dla klasy.

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

Uwagi

Platforma .NET definiuje element tekstowy jako jednostkę tekstu, która jest wyświetlana jako pojedynczy znak, czyli grafu. Element tekstowy może być znakiem podstawowym, parą zastępczą lub łączącą sekwencją znaków. Standard Unicode definiuje parę zastępczą jako zakodowaną reprezentację znaków dla pojedynczego abstrakcyjnego znaku, który składa się z sekwencji dwóch jednostek kodu, gdzie pierwsza jednostka pary jest wysoką zastępcą, a druga jest niskim zastępcą. Standard Unicode definiuje łączącą sekwencję znaków jako kombinację znaku podstawowego i co najmniej jeden łączący znaki. Para zastępcza może reprezentować znak podstawowy lub znak łączący.

Moduł wyliczający elementu tekstowego jest używany tylko do odczytywania danych w ciągu; nie może zmodyfikować bazowego ciągu. Moduł wyliczający nie ma wyłącznego dostępu do ciągu.

Moduł wyliczający jest w nieprawidłowym stanie, jeśli jest umieszczony przed pierwszym elementem tekstowym w ciągu lub po ostatnim elemecie tekstowym w ciągu. Gdy moduł wyliczający jest w nieprawidłowym stanie, wywołanie Current zgłasza wyjątek.

Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem tekstowym w ciągu. Reset powoduje również powrót modułu wyliczającego do tej pozycji. W związku z tym po utworzeniu lub wywołaniu Reset modułu wyliczającego należy wywołać metodę , MoveNext aby przejść do pierwszego elementu tekstowego ciągu przed odczytaniem wartości Current.

Current zwraca ten sam obiekt do momentu wywołania metody MoveNext lub Reset .

Po przekazaniu końca ciągu moduł wyliczający jest ponownie w nieprawidłowym stanie, a wywołanie MoveNext zwraca wartość false. Wywołanie wywołania zgłasza wyjątek, jeśli ostatnie wywołanie Current zwracane MoveNextfalse.

Zobacz też

Dotyczy

GetTextElementEnumerator(String, Int32)

Źródło:
StringInfo.cs
Źródło:
StringInfo.cs
Źródło:
StringInfo.cs

Zwraca moduł wyliczający, który iteruje elementy tekstowe ciągu, zaczynając od określonego indeksu.

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

Parametry

str
String

Ciąg do iterowania.

index
Int32

Indeks oparty na zera, na którym ma rozpocząć iterację.

Zwraca

A TextElementEnumerator dla ciągu rozpoczynającego się od index.

Wyjątki

str to null.

index znajduje się poza zakresem prawidłowych indeksów dla elementu str.

Uwagi

Platforma .NET definiuje element tekstowy jako jednostkę tekstu, która jest wyświetlana jako pojedynczy znak, czyli grafu. Element tekstowy może być znakiem podstawowym, parą zastępczą lub łączącą sekwencją znaków. Standard Unicode definiuje parę zastępczą jako zakodowaną reprezentację znaków dla pojedynczego abstrakcyjnego znaku, który składa się z sekwencji dwóch jednostek kodu, gdzie pierwsza jednostka pary jest wysoką zastępcą, a druga jest niskim zastępcą. Standard Unicode definiuje łączącą sekwencję znaków jako kombinację znaku podstawowego i co najmniej jeden łączący znaki. Para zastępcza może reprezentować znak podstawowy lub znak łączący.

Moduł wyliczający elementu tekstowego jest używany tylko do odczytywania danych w ciągu; nie może zmodyfikować bazowego ciągu. Moduł wyliczający nie ma wyłącznego dostępu do ciągu.

Moduł wyliczający jest w nieprawidłowym stanie, jeśli jest umieszczony przed pierwszym elementem tekstowym w ciągu lub po ostatnim elemecie tekstowym w ciągu. Gdy moduł wyliczający jest w nieprawidłowym stanie, wywołanie Current zgłasza wyjątek.

Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem tekstowym w ciągu. Reset powoduje również powrót modułu wyliczającego do tej pozycji. W związku z tym po utworzeniu lub wywołaniu Reset modułu wyliczającego należy wywołać metodę , MoveNext aby przejść do pierwszego elementu tekstowego ciągu przed odczytaniem wartości Current.

Current zwraca ten sam obiekt do momentu wywołania metody MoveNext lub Reset .

Po przekazaniu końca ciągu moduł wyliczający jest ponownie w nieprawidłowym stanie, a wywołanie MoveNext zwraca wartość false. Wywołanie wywołania zgłasza wyjątek, jeśli ostatnie wywołanie Current zwracane MoveNextfalse.

Zobacz też

Dotyczy