StringInfo.GetTextElementEnumerator Yöntem

Tanım

Bir dizenin metin öğelerinde yineleyen bir numaralandırıcı döndürür.

Aşırı Yüklemeler

GetTextElementEnumerator(String)

Tüm dizenin metin öğelerinde yineleyen bir numaralandırıcı döndürür.

GetTextElementEnumerator(String, Int32)

Belirtilen dizinden başlayarak dizenin metin öğelerinde yineleyen bir numaralandırıcı döndürür.

GetTextElementEnumerator(String)

Kaynak:
StringInfo.cs
Kaynak:
StringInfo.cs
Kaynak:
StringInfo.cs

Tüm dizenin metin öğelerinde yineleyen bir numaralandırıcı döndürür.

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

Parametreler

str
String

Yinelenir dize.

Döndürülenler

Dizenin tamamı için A TextElementEnumerator .

Özel durumlar

str, null değeridir.

Örnekler

Aşağıdaki örnekte yönteminin çağrılması gösterilmektedir GetTextElementEnumerator . Bu örnek, sınıfı için StringInfo sağlanan daha büyük bir örneğin parçasıdır.

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

Açıklamalar

.NET, bir metin öğesini tek bir karakter olarak görüntülenen bir metin birimi, yani grafeme olarak tanımlar. Metin öğesi bir temel karakter, vekil çift veya birleşen karakter dizisi olabilir. Unicode Standardı, çiftin ilk biriminin yüksek vekil, ikincisinin ise düşük vekil olduğu iki kod biriminden oluşan bir diziden oluşan tek bir soyut karakter için kodlanmış karakter gösterimi olarak bir vekil çift tanımlar. Unicode Standart, bir birleştirme karakter dizisini bir temel karakter ve bir veya daha fazla birleştirme karakterinin birleşimi olarak tanımlar. Vekil çift, bir temel karakteri veya birleştirme karakterini temsil edebilir.

Metin öğesi numaralandırıcısı yalnızca dizedeki verileri okumak için kullanılır; temel dizeyi değiştiremez. Numaralandırıcının dizeye özel erişimi yok.

Numaralandırıcı, dizedeki ilk metin öğesinden önce veya dizedeki son metin öğesinden sonra konumlandırıldıysa geçersiz durumdadır. Numaralandırıcı geçersiz bir durumda olduğunda, çağrı Current bir özel durum oluşturur.

Başlangıçta, numaralandırıcı dizedeki ilk metin öğesinden önce konumlandırılır. Reset ayrıca numaralandırıcıyı bu konuma geri getirir. Bu nedenle, bir numaralandırıcı oluşturulduktan veya çağrıldıktan sonra Reset , MoveNext değerini Currentokumadan önce numaralandırıcıyı dizenin ilk metin öğesine ilerletmek için çağrılmalıdır.

Currentveya Reset çağrılana kadar MoveNext aynı nesneyi döndürür.

Dizenin sonu geçirildikten sonra, numaralandırıcı yine geçersiz bir durumda olur ve çağrısı MoveNext döndürür false. çağrısıCurrent, döndürülen falseson çağrısında MoveNext bir özel durum oluşturur.

Ayrıca bkz.

Şunlara uygulanır

GetTextElementEnumerator(String, Int32)

Kaynak:
StringInfo.cs
Kaynak:
StringInfo.cs
Kaynak:
StringInfo.cs

Belirtilen dizinden başlayarak dizenin metin öğelerinde yineleyen bir numaralandırıcı döndürür.

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

Parametreler

str
String

Yinelenir dize.

index
Int32

Yinelemenin başlatıldığı sıfır tabanlı dizin.

Döndürülenler

ile indexbaşlayan dize için birTextElementEnumerator.

Özel durumlar

str, null değeridir.

index , için strgeçerli dizin aralığının dışındadır.

Açıklamalar

.NET, bir metin öğesini tek bir karakter olarak görüntülenen bir metin birimi, yani grafeme olarak tanımlar. Metin öğesi bir temel karakter, vekil çift veya birleşen karakter dizisi olabilir. Unicode Standardı, çiftin ilk biriminin yüksek vekil, ikincisinin ise düşük vekil olduğu iki kod biriminden oluşan bir diziden oluşan tek bir soyut karakter için kodlanmış karakter gösterimi olarak bir vekil çift tanımlar. Unicode Standart, bir birleştirme karakter dizisini bir temel karakter ve bir veya daha fazla birleştirme karakterinin birleşimi olarak tanımlar. Vekil çift, bir temel karakteri veya birleştirme karakterini temsil edebilir.

Metin öğesi numaralandırıcısı yalnızca dizedeki verileri okumak için kullanılır; temel dizeyi değiştiremez. Numaralandırıcının dizeye özel erişimi yok.

Numaralandırıcı, dizedeki ilk metin öğesinden önce veya dizedeki son metin öğesinden sonra konumlandırıldıysa geçersiz durumdadır. Numaralandırıcı geçersiz bir durumda olduğunda, çağrı Current bir özel durum oluşturur.

Başlangıçta, numaralandırıcı dizedeki ilk metin öğesinden önce konumlandırılır. Reset ayrıca numaralandırıcıyı bu konuma geri getirir. Bu nedenle, bir numaralandırıcı oluşturulduktan veya çağrıldıktan sonra Reset , MoveNext değerini Currentokumadan önce numaralandırıcıyı dizenin ilk metin öğesine ilerletmek için çağrılmalıdır.

Currentveya Reset çağrılana kadar MoveNext aynı nesneyi döndürür.

Dizenin sonu geçirildikten sonra, numaralandırıcı yine geçersiz bir durumda olur ve çağrısı MoveNext döndürür false. çağrısıCurrent, döndürülen falseson çağrısında MoveNext bir özel durum oluşturur.

Ayrıca bkz.

Şunlara uygulanır