StringInfo.GetTextElementEnumerator Metode

Definisi

Mengembalikan enumerator yang melakukan iterasi melalui elemen teks string.

Overload

GetTextElementEnumerator(String)

Mengembalikan enumerator yang melakukan iterasi melalui elemen teks dari seluruh string.

GetTextElementEnumerator(String, Int32)

Mengembalikan enumerator yang melakukan iterasi melalui elemen teks string, dimulai pada indeks yang ditentukan.

GetTextElementEnumerator(String)

Sumber:
StringInfo.cs
Sumber:
StringInfo.cs
Sumber:
StringInfo.cs

Mengembalikan enumerator yang melakukan iterasi melalui elemen teks dari seluruh string.

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

String yang akan diulang.

Mengembalikan

A TextElementEnumerator untuk seluruh string.

Pengecualian

stradalah null.

Contoh

Contoh berikut menunjukkan pemanggilan GetTextElementEnumerator metode . Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk StringInfo kelas .

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

Keterangan

.NET mendefinisikan elemen teks sebagai satuan teks yang ditampilkan sebagai karakter tunggal, yaitu grafik. Elemen teks dapat menjadi karakter dasar, pasangan pengganti, atau urutan karakter gabungan. Standar Unicode mendefinisikan pasangan pengganti sebagai representasi karakter berkode untuk satu karakter abstrak yang terdiri dari urutan dua unit kode, di mana unit pertama pasangan adalah pengganti tinggi dan yang kedua adalah pengganti rendah. Unicode Standard mendefinisikan urutan karakter gabungan sebagai kombinasi karakter dasar dan satu atau beberapa karakter yang menggabungkan. Pasangan pengganti dapat mewakili karakter dasar atau karakter gabungan.

Enumerator elemen teks hanya digunakan untuk membaca data dalam string; tidak dapat mengubah string yang mendasar. Enumerator tidak memiliki akses eksklusif ke string.

Enumerator berada dalam status tidak valid jika diposisikan sebelum elemen teks pertama dalam string atau setelah elemen teks terakhir dalam string. Ketika enumerator dalam keadaan tidak valid, panggilan Current akan melemparkan pengecualian.

Awalnya, enumerator diposisikan sebelum elemen teks pertama dalam string. Reset juga membawa enumerator kembali ke posisi ini. Oleh karena itu, setelah enumerator dibuat atau setelah Reset dipanggil, MoveNext harus dipanggil untuk memajukan enumerator ke elemen teks pertama string sebelum membaca nilai Current.

Current mengembalikan objek yang sama hingga atau MoveNextReset dipanggil.

Setelah akhir string dilewatkan, enumerator lagi dalam status tidak valid dan panggilan MoveNext mengembalikan false. Current Panggilan melempar pengecualian jika panggilan terakhir untuk MoveNext dikembalikan false.

Lihat juga

Berlaku untuk

GetTextElementEnumerator(String, Int32)

Sumber:
StringInfo.cs
Sumber:
StringInfo.cs
Sumber:
StringInfo.cs

Mengembalikan enumerator yang melakukan iterasi melalui elemen teks string, dimulai pada indeks yang ditentukan.

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

String yang akan diulang.

index
Int32

Indeks berbasis nol untuk mulai melakukan iterasi.

Mengembalikan

TextElementEnumerator untuk string mulai dari index.

Pengecualian

stradalah null.

index berada di luar rentang indeks yang valid untuk str.

Keterangan

.NET mendefinisikan elemen teks sebagai satuan teks yang ditampilkan sebagai karakter tunggal, yaitu grafik. Elemen teks dapat menjadi karakter dasar, pasangan pengganti, atau urutan karakter gabungan. Standar Unicode mendefinisikan pasangan pengganti sebagai representasi karakter berkode untuk satu karakter abstrak yang terdiri dari urutan dua unit kode, di mana unit pertama pasangan adalah pengganti tinggi dan yang kedua adalah pengganti rendah. Unicode Standard mendefinisikan urutan karakter gabungan sebagai kombinasi karakter dasar dan satu atau beberapa karakter yang menggabungkan. Pasangan pengganti dapat mewakili karakter dasar atau karakter gabungan.

Enumerator elemen teks hanya digunakan untuk membaca data dalam string; tidak dapat mengubah string yang mendasar. Enumerator tidak memiliki akses eksklusif ke string.

Enumerator berada dalam status tidak valid jika diposisikan sebelum elemen teks pertama dalam string atau setelah elemen teks terakhir dalam string. Ketika enumerator dalam keadaan tidak valid, panggilan Current akan melemparkan pengecualian.

Awalnya, enumerator diposisikan sebelum elemen teks pertama dalam string. Reset juga membawa enumerator kembali ke posisi ini. Oleh karena itu, setelah enumerator dibuat atau setelah Reset dipanggil, MoveNext harus dipanggil untuk memajukan enumerator ke elemen teks pertama string sebelum membaca nilai Current.

Current mengembalikan objek yang sama hingga atau MoveNextReset dipanggil.

Setelah akhir string dilewatkan, enumerator lagi dalam status tidak valid dan panggilan MoveNext mengembalikan false. Current Panggilan melempar pengecualian jika panggilan terakhir untuk MoveNext dikembalikan false.

Lihat juga

Berlaku untuk