TextElementEnumerator Класс

Определение

Перечисляет текстовые элементы строки.

public ref class TextElementEnumerator : System::Collections::IEnumerator
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
public class TextElementEnumerator : System.Collections.IEnumerator
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class TextElementEnumerator : System.Collections.IEnumerator
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
type TextElementEnumerator = class
    interface IEnumerator
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TextElementEnumerator = class
    interface IEnumerator
Public Class TextElementEnumerator
Implements IEnumerator
Наследование
TextElementEnumerator
Атрибуты
Реализации

Примеры

В следующем примере класс используется TextElementEnumerator для перечисления текстовых элементов строки.

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]:    à       à
[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]:    à       à
[4]:    Æ       Æ

*/
Imports System.Globalization

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

End Class

'This code produces the following output.  The question marks take the place of high and low surrogates.
'
'Index   Current GetTextElement
'[0]:    𐀀       𐀀
'[2]:    à       à
'[4]:    Æ       Æ

Комментарии

Платформа .NET Framework определяет текстовый элемент как единицу текста, отображаемую как один символ, то есть графем. Текстовый элемент может быть любым из следующих элементов:

  • Базовый символ, представленный как одно Char значение. Например, ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА A (U+0041) и ЛАТИНСКАЯ МАЛЕНЬКАЯ БУКВА AE (U+00E6) являются базовыми символами.

  • Объединение последовательности символов, состоящей из базового символа и одного или нескольких комбинирования символов. Например, латинская прописная буква A (U+0041), за которой следует СОЧЕТАНИЕ МАКРОНА (U+0304) — это объединение последовательности символов.

  • Суррогатные пары, которые стандарт Юникод определяет как закодированное представление символа для одного абстрактного символа, состоящего из последовательности двух единиц кода: высокого суррогата и низкого суррогата. Суррогатные пары используются для представления символов за пределами базовой многоязычной плоскости Юникода в виде символов в кодировке UTF-16. Например, ГОТИЧЕСКАЯ БУКВА SAUIL (U+10343) представлена в кодировке UTF-16 как суррогат с высоким значением 0xD800 и низким суррогатом, значение которого 0xDF43. Суррогатная пара может представлять базовый символ или объединяющий символ.

Класс TextElementEnumerator позволяет работать с текстовыми элементами в строке, а не с одними Char объектами.

Вы создаете экземпляр TextElementEnumerator объекта, представляющего определенную строку, передав строку StringInfo.GetTextElementEnumerator в метод. Возвращает перечислитель, позиционированный перед первым текстовым элементом в строке. Reset Вызов метода также возвращает перечислитель к этой позиции. Так как это представляет недопустимое состояние, необходимо вызвать MoveNext перечислитель к первому текстовому элементу строки, прежде чем считывать значение Current свойства, чтобы вернуть текущий текстовый элемент.

При работе с TextElementEnumerator объектом вы несете ответственность за размещение перечислителя. Свойство Current возвращает тот же текстовый элемент, пока не будет вызываться либо MoveNext Reset. Перечислитель находится в недопустимом состоянии, если он располагается перед первым текстовым элементом или после последнего текстового элемента в строке. Если перечислитель находится в недопустимом состоянии, попытка получить значение Current свойства вызывает исключение. Вы можете определить, находится ли перечислитель в недопустимом состоянии, проверив, является falseли возвращаемое значение MoveNext свойства.

Объект TextElementEnumerator представляет моментальный снимок текущего состояния строковой переменной или строкового литерала в момент создания экземпляра TextElementEnumerator объекта. Обратите внимание на следующее.

  • Перечислители текстовых элементов можно использовать только для чтения данных в строке. Они не могут изменить базовую строку.

  • Перечислитель не имеет монопольного доступа к представленной строке. Строковую переменную можно изменить после создания перечислителя.

  • Объект TextElementEnumerator перечисляет текстовые элементы, присутствующих в строке во время создания экземпляра TextElementEnumerator объекта. Если эта переменная будет изменена, она не отражает никаких последующих изменений в строковой переменной.

  • TextElementEnumerator Так как класс не переопределяетсяObject.Equals, два TextElementEnumerator объекта, представляющие одну и ту же строку, будут считаться неравными.

Свойства

Current

Возвращает текущий текстовый элемент строки.

ElementIndex

Возвращает индекс текстового элемента, в котором в настоящий момент находится перечислитель.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetTextElement()

Возвращает текущий текстовый элемент строки.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MoveNext()

Перемещает перечислитель на следующий текстовый элемент строки.

Reset()

Перемещает перечислитель в исходное положение, перед первым текстовым элементом в строке.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел