StringInfo.GetTextElementEnumerator Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca moduł wyliczający, który iteruje przez elementy tekstowe ciągu.
Przeciążenia
| Nazwa | Opis |
|---|---|
| GetTextElementEnumerator(String) |
Zwraca moduł wyliczający, który iteruje przez elementy tekstowe całego ciągu. |
| GetTextElementEnumerator(String, Int32) |
Zwraca moduł wyliczający, który iteruje przez elementy tekstowe ciągu, zaczynając od określonego indeksu. |
GetTextElementEnumerator(String)
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
Zwraca moduł wyliczający, który iteruje przez elementy tekstowe całego ciągu.
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
Parametry
- str
- String
Ciąg do iterowania.
Zwraca
Wartość TextElementEnumerator dla całego ciągu.
Wyjątki
Parametr str ma wartość null.
Przykłady
W poniższym przykładzie pokazano wywołanie metody GetTextElementEnumerator. Ten przykład jest częścią większego przykładu udostępnionego StringInfo dla klasy .
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
Uwagi
Platforma .NET definiuje element tekstowy jako jednostkę tekstu, która jest wyświetlana jako pojedynczy znak, czyli grafu. Elementem tekstowym może być znak podstawowy, para zastępcza lub łącząca sekwencja znaków. Standard Unicode definiuje parę zastępczą jako reprezentację znaków kodowanych dla pojedynczego abstrakcyjnego znaku, który składa się z sekwencji dwóch jednostek kodu, gdzie pierwsza jednostka pary jest wysokim zastępcą, a druga jest niskim zastępcą. Standard Unicode definiuje łączącą sekwencję znaków jako kombinację znaku podstawowego i co najmniej jeden znak łączący. Para zastępcza może reprezentować znak podstawowy lub znak łączący.
Moduł wyliczający elementu tekstowego jest używany tylko do odczytywania danych w ciągu; nie może modyfikować bazowego ciągu. Moduł wyliczający nie ma wyłącznego dostępu do ciągu.
Moduł wyliczający jest w nieprawidłowym stanie, jeśli jest umieszczony przed pierwszym elementem tekstowym w ciągu lub po ostatnim elemecie tekstowym w ciągu. Gdy moduł wyliczający jest w nieprawidłowym stanie, wywołanie Current metody zgłasza wyjątek.
Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem tekstowym w ciągu. Reset powoduje również powrót modułu wyliczającego do tej pozycji. W związku z tym po utworzeniu lub po Reset wywołaniu MoveNext modułu wyliczającego należy wywołać metodę , aby przejść do pierwszego elementu tekstowego ciągu przed odczytaniem wartości Current.
Current metoda zwraca ten sam obiekt do momentu wywołania metody MoveNext lub Reset .
Po przekazaniu końca ciągu moduł wyliczający jest ponownie w nieprawidłowym stanie, a wywołanie MoveNext zwraca wartość false. Wywołanie Current wywołania zgłasza wyjątek, jeśli ostatnie wywołanie MoveNext zwraca wartość false.
Zobacz też
Dotyczy
GetTextElementEnumerator(String, Int32)
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
- Źródło:
- StringInfo.cs
Zwraca moduł wyliczający, który iteruje przez elementy tekstowe ciągu, zaczynając od określonego indeksu.
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
Parametry
- str
- String
Ciąg do iterowania.
- index
- Int32
Indeks oparty na zera, na którym należy rozpocząć iterację.
Zwraca
A TextElementEnumerator dla ciągu rozpoczynającego się od index.
Wyjątki
Parametr str ma wartość null.
index znajduje się poza zakresem prawidłowych indeksów dla elementu str.
Uwagi
Platforma .NET definiuje element tekstowy jako jednostkę tekstu, która jest wyświetlana jako pojedynczy znak, czyli grafu. Elementem tekstowym może być znak podstawowy, para zastępcza lub łącząca sekwencja znaków. Standard Unicode definiuje parę zastępczą jako reprezentację znaków kodowanych dla pojedynczego abstrakcyjnego znaku, który składa się z sekwencji dwóch jednostek kodu, gdzie pierwsza jednostka pary jest wysokim zastępcą, a druga jest niskim zastępcą. Standard Unicode definiuje łączącą sekwencję znaków jako kombinację znaku podstawowego i co najmniej jeden znak łączący. Para zastępcza może reprezentować znak podstawowy lub znak łączący.
Moduł wyliczający elementu tekstowego jest używany tylko do odczytywania danych w ciągu; nie może modyfikować bazowego ciągu. Moduł wyliczający nie ma wyłącznego dostępu do ciągu.
Moduł wyliczający jest w nieprawidłowym stanie, jeśli jest umieszczony przed pierwszym elementem tekstowym w ciągu lub po ostatnim elemecie tekstowym w ciągu. Gdy moduł wyliczający jest w nieprawidłowym stanie, wywołanie Current metody zgłasza wyjątek.
Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem tekstowym w ciągu. Reset powoduje również powrót modułu wyliczającego do tej pozycji. W związku z tym po utworzeniu lub po Reset wywołaniu MoveNext modułu wyliczającego należy wywołać metodę , aby przejść do pierwszego elementu tekstowego ciągu przed odczytaniem wartości Current.
Current metoda zwraca ten sam obiekt do momentu wywołania metody MoveNext lub Reset .
Po przekazaniu końca ciągu moduł wyliczający jest ponownie w nieprawidłowym stanie, a wywołanie MoveNext zwraca wartość false. Wywołanie Current wywołania zgłasza wyjątek, jeśli ostatnie wywołanie MoveNext zwraca wartość false.