StringInfo.GetTextElementEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечислитель, который выполняет итерацию по текстовым элементам строки.
Перегрузки
| Имя | Описание |
|---|---|
| GetTextElementEnumerator(String) |
Возвращает перечислитель, который выполняет итерацию по текстовым элементам всей строки. |
| GetTextElementEnumerator(String, Int32) |
Возвращает перечислитель, который выполняет итерацию по текстовым элементам строки, начиная с указанного индекса. |
GetTextElementEnumerator(String)
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
Возвращает перечислитель, который выполняет итерацию по текстовым элементам всей строки.
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
Параметры
- str
- String
Строка для итерации.
Возвращаемое значение
A TextElementEnumerator для всей строки.
Исключения
str равно null.
Примеры
В следующем примере показано вызов метода GetTextElementEnumerator. Этот пример является частью более крупного примера, предоставленного StringInfo для класса.
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
Комментарии
.NET определяет текстовый элемент как единицу текста, отображаемого как один символ, то есть графем. Текстовый элемент может быть базовым символом, суррогатной парой или объединением последовательности символов. Стандарт Юникода определяет суррогатную пару как закодированное представление символа для одного абстрактного символа, состоящего из последовательности двух единиц кода, где первая единица пары является высокой суррогатной, а второй — низкой суррогатной. Стандарт Юникод определяет комбинацию последовательности символов в виде сочетания базового символа и одного или нескольких объединенных символов. Суррогатная пара может представлять базовый символ или объединенный символ.
Перечислитель текстовых элементов используется только для чтения данных в строке; Он не может изменить базовую строку. Перечислитель не имеет монопольного доступа к строке.
Перечислитель находится в недопустимом состоянии, если он расположен до первого текстового элемента в строке или после последнего текстового элемента в строке. Если перечислитель находится в недопустимом состоянии, вызов Current вызывает исключение.
Изначально перечислитель размещается перед первым текстовым элементом в строке. Reset также возвращает перечислитель обратно в эту позицию. Таким образом, после создания перечислителя или после Reset вызова MoveNext необходимо вызвать перечислитель до первого текстового элемента строки перед чтением значения Current.
Current возвращает один и тот же объект, пока MoveNextReset не вызывается либо вызывается.
После прохождения строки перечислитель снова находится в недопустимом состоянии и возвращает вызов MoveNextfalse. Вызов Current вызывает исключение, если последний вызов MoveNext возвращается false.
См. также раздел
Применяется к
GetTextElementEnumerator(String, Int32)
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
- Исходный код:
- StringInfo.cs
Возвращает перечислитель, который выполняет итерацию по текстовым элементам строки, начиная с указанного индекса.
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
Параметры
- str
- String
Строка для итерации.
- index
- Int32
Отсчитываемый от нуля индекс, с которого начинается итерация.
Возвращаемое значение
Строка TextElementEnumerator начинается indexс .
Исключения
str равно null.
index находится за пределами диапазона допустимых индексов для str.
Комментарии
.NET определяет текстовый элемент как единицу текста, отображаемого как один символ, то есть графем. Текстовый элемент может быть базовым символом, суррогатной парой или объединением последовательности символов. Стандарт Юникода определяет суррогатную пару как закодированное представление символа для одного абстрактного символа, состоящего из последовательности двух единиц кода, где первая единица пары является высокой суррогатной, а второй — низкой суррогатной. Стандарт Юникод определяет комбинацию последовательности символов в виде сочетания базового символа и одного или нескольких объединенных символов. Суррогатная пара может представлять базовый символ или объединенный символ.
Перечислитель текстовых элементов используется только для чтения данных в строке; Он не может изменить базовую строку. Перечислитель не имеет монопольного доступа к строке.
Перечислитель находится в недопустимом состоянии, если он расположен до первого текстового элемента в строке или после последнего текстового элемента в строке. Если перечислитель находится в недопустимом состоянии, вызов Current вызывает исключение.
Изначально перечислитель размещается перед первым текстовым элементом в строке. Reset также возвращает перечислитель обратно в эту позицию. Таким образом, после создания перечислителя или после Reset вызова MoveNext необходимо вызвать перечислитель до первого текстового элемента строки перед чтением значения Current.
Current возвращает один и тот же объект, пока MoveNextReset не вызывается либо вызывается.
После прохождения строки перечислитель снова находится в недопустимом состоянии и возвращает вызов MoveNextfalse. Вызов Current вызывает исключение, если последний вызов MoveNext возвращается false.