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 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 значение. Например, LATIN CAPITAL LETTER A (U+0041) и LATIN SMALL LETTER 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 возвращает тот же текстовый элемент, пока не вызовете либо MoveNextReset. Перечислитель находится в недопустимом состоянии, если он расположен до первого текстового элемента или после последнего текстового элемента в строке. Если перечислитель находится в недопустимом состоянии, попытка получить значение 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) |