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) |