Sdílet prostřednictvím


StringInfo.GetTextElementEnumerator Metoda

Definice

Vrátí enumerátor, který iteruje textovými prvky řetězce.

Přetížení

GetTextElementEnumerator(String)

Vrátí enumerátor, který iteruje textové prvky celého řetězce.

GetTextElementEnumerator(String, Int32)

Vrátí enumerátor, který iteruje textovými prvky řetězce počínaje zadaným indexem.

GetTextElementEnumerator(String)

Zdroj:
StringInfo.cs
Zdroj:
StringInfo.cs
Zdroj:
StringInfo.cs

Vrátí enumerátor, který iteruje textové prvky celého řetězce.

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

Řetězec, který se má iterovat.

Návraty

A TextElementEnumerator pro celý řetězec.

Výjimky

str je null.

Příklady

Následující příklad ukazuje volání GetTextElementEnumerator metody. Tento příklad je součástí většího příkladu StringInfo pro třídu.

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

Poznámky

.NET definuje textový prvek jako jednotku textu, která se zobrazuje jako jeden znak, tj. grafém. Textovým prvkem může být základní znak, náhradní pár nebo kombinující sekvence znaků. Standard Unicode definuje náhradní dvojici jako kódovanou reprezentaci znaků pro jeden abstraktní znak, který se skládá ze posloupnosti dvou jednotek kódu, kde první jednotka páru je vysoká náhradní a druhá je nízká náhradní. Standard unicode definuje sekvenci znaků jako kombinaci základního znaku a jednoho nebo více kombinujících znaků. Náhradní dvojice může představovat základní znak nebo kombinační znak.

Textový prvek enumerator se používá pouze ke čtení dat v řetězci; nemůže upravit podkladový řetězec. Enumerátor nemá výhradní přístup k řetězci.

Enumerátor je v neplatném stavu, pokud je umístěn před prvním textovým prvkem v řetězci nebo za poslední prvek textu v řetězci. Pokud je enumerátor v neplatném stavu, vyvolá volání Current výjimku.

Zpočátku je enumerátor umístěn před prvním textovým prvkem v řetězci. Reset také vrátí enumerátor zpět do této pozice. Proto po vytvoření enumerátoru nebo po Reset je volán, musí být volán, MoveNext aby se enumerátor před čtením hodnoty Current.

Current vrátí stejný objekt, dokud není volána nebo MoveNextReset .

Po předání konce řetězce je enumerátor znovu v neplatném stavu a volání MoveNext vrátí .false Volání Current vyvolá výjimku, pokud poslední volání MoveNext vrátilo false.

Viz také

Platí pro

GetTextElementEnumerator(String, Int32)

Zdroj:
StringInfo.cs
Zdroj:
StringInfo.cs
Zdroj:
StringInfo.cs

Vrátí enumerátor, který iteruje textovými prvky řetězce počínaje zadaným indexem.

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

Řetězec, který se má iterovat.

index
Int32

Index založený na nule, u kterého se má zahájit iterace.

Návraty

A TextElementEnumerator pro řetězec začínající na index.

Výjimky

str je null.

index je mimo rozsah platných indexů pro str.

Poznámky

.NET definuje textový prvek jako jednotku textu, která se zobrazuje jako jeden znak, tj. grafém. Textovým prvkem může být základní znak, náhradní pár nebo kombinující sekvence znaků. Standard Unicode definuje náhradní dvojici jako kódovanou reprezentaci znaků pro jeden abstraktní znak, který se skládá ze posloupnosti dvou jednotek kódu, kde první jednotka páru je vysoká náhradní a druhá je nízká náhradní. Standard unicode definuje sekvenci znaků jako kombinaci základního znaku a jednoho nebo více kombinujících znaků. Náhradní dvojice může představovat základní znak nebo kombinační znak.

Textový prvek enumerator se používá pouze ke čtení dat v řetězci; nemůže upravit podkladový řetězec. Enumerátor nemá výhradní přístup k řetězci.

Enumerátor je v neplatném stavu, pokud je umístěn před prvním textovým prvkem v řetězci nebo za poslední prvek textu v řetězci. Pokud je enumerátor v neplatném stavu, vyvolá volání Current výjimku.

Zpočátku je enumerátor umístěn před prvním textovým prvkem v řetězci. Reset také vrátí enumerátor zpět do této pozice. Proto po vytvoření enumerátoru nebo po Reset je volán, musí být volán, MoveNext aby se enumerátor před čtením hodnoty Current.

Current vrátí stejný objekt, dokud není volána nebo MoveNextReset .

Po předání konce řetězce je enumerátor znovu v neplatném stavu a volání MoveNext vrátí .false Volání Current vyvolá výjimku, pokud poslední volání MoveNext vrátilo false.

Viz také

Platí pro