Поделиться через


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. Например, GOTHIC LETTER SAUIL (U+10343) представлен в кодировке UTF-16 как суррогат высокого уровня, значение которого равно 0xD800, и как низкий суррогат, значение которого равно 0xDF43. Суррогатная пара может представлять базовый или объединяющий символ.

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

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

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

Объект TextElementEnumerator представляет snapshot текущего состояния строковой переменной или строкового литерала в момент создания экземпляра 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)

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

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