StringInfo.GetTextElementEnumerator Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un enumeratore che consente di scorrere gli elementi di testo di una stringa.
Overload
GetTextElementEnumerator(String) |
Restituisce un enumeratore che consente di scorrere gli elementi di testo dell'intera stringa. |
GetTextElementEnumerator(String, Int32) |
Restituisce un enumeratore che consente di scorrere gli elementi di testo della stringa, a partire dall'indice specificato. |
GetTextElementEnumerator(String)
- Origine:
- StringInfo.cs
- Origine:
- StringInfo.cs
- Origine:
- StringInfo.cs
Restituisce un enumeratore che consente di scorrere gli elementi di testo dell'intera stringa.
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
Parametri
- str
- String
Stringa da scorrere.
Restituisce
Oggetto TextElementEnumerator per l'intera stringa.
Eccezioni
str
è null
.
Esempio
Nel codice riportato di seguito viene illustrata la chiamata al metodo GetTextElementEnumerator. Questo esempio fa parte di un esempio più grande fornito per la StringInfo classe.
using namespace System;
using namespace System::Text;
using namespace System::Globalization;
// Show how to enumerate each real character (honoring surrogates)
// in a string.
void EnumTextElements(String^ combiningChars)
{
// This StringBuilder holds the output results.
StringBuilder^ sb = gcnew StringBuilder();
// Use the enumerator returned from GetTextElementEnumerator
// method to examine each real character.
TextElementEnumerator^ charEnum =
StringInfo::GetTextElementEnumerator(combiningChars);
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.
void EnumTextElementIndexes(String^ combiningChars)
{
// This StringBuilder holds the output results.
StringBuilder^ sb = gcnew StringBuilder();
// Use the ParseCombiningCharacters method to
// get the index of each real character in the string.
array <int>^ textElemIndex =
StringInfo::ParseCombiningCharacters(combiningChars);
// Iterate through each real character showing the character
// and the index where it was found.
for (int 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);
}
int main()
{
// The string below contains combining characters.
String^ combiningChars = L"a\u0304\u0308bc\u0327";
// Show each 'character' in the string.
EnumTextElements(combiningChars);
// Show the index in the string where each 'character' starts.
EnumTextElementIndexes(combiningChars);
};
// This code produces the following output.
//
// Result of GetTextElementEnumerator:
// Character at index 0 is 'a-"'
// Character at index 3 is 'b'
// Character at index 4 is 'c,'
//
// Result of ParseCombiningCharacters:
// Character 0 starts at index 0
// Character 1 starts at index 3
// Character 2 starts at index 4
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
Commenti
.NET definisce un elemento di testo come unità di testo visualizzato come singolo carattere, ovvero un grapheme. Un elemento di testo può essere un carattere di base, una coppia surrogata o una sequenza di caratteri combinata. Unicode Standard definisce una coppia surrogata come rappresentazione di caratteri codificati per un singolo carattere astratto costituito da una sequenza di due unità di codice, dove la prima unità della coppia è un surrogato elevato e la seconda è un surrogato basso. Unicode Standard definisce una sequenza di caratteri combinata come combinazione di un carattere di base e uno o più caratteri di combinazione. Una coppia surrogata può rappresentare un carattere di base o un carattere di combinazione.
L'enumeratore di elementi di testo viene usato solo per leggere i dati nella stringa; non può modificare la stringa sottostante. L'enumeratore non ha accesso esclusivo alla stringa.
L'enumeratore è in uno stato non valido se viene posizionato prima del primo elemento di testo nella stringa o dopo l'ultimo elemento di testo nella stringa. Quando l'enumeratore si trova in uno stato non valido, la chiamata Current genera un'eccezione.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento di testo nella stringa. Anche il metodo Reset riporta l'enumeratore in questa posizione. Pertanto, dopo aver creato o dopo Reset la chiamata di un enumeratore, MoveNext è necessario chiamare per avanzare l'enumeratore al primo elemento di testo della stringa prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non viene chiamato il metodo MoveNext o Reset.
Dopo aver passato la fine della stringa, l'enumeratore viene nuovamente in uno stato non valido e la chiamata MoveNext restituisce false
. La chiamata Current genera un'eccezione se l'ultima chiamata a MoveNext restituisce false
.
Vedi anche
Si applica a
GetTextElementEnumerator(String, Int32)
- Origine:
- StringInfo.cs
- Origine:
- StringInfo.cs
- Origine:
- StringInfo.cs
Restituisce un enumeratore che consente di scorrere gli elementi di testo della stringa, a partire dall'indice specificato.
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
Parametri
- str
- String
Stringa da scorrere.
- index
- Int32
Indice in base zero dal quale iniziare lo scorrimento.
Restituisce
Oggetto TextElementEnumerator per la stringa che parte da index
.
Eccezioni
str
è null
.
index
non è compreso nell'intervallo di indici validi per str
.
Commenti
.NET definisce un elemento di testo come unità di testo visualizzato come singolo carattere, ovvero un grapheme. Un elemento di testo può essere un carattere di base, una coppia surrogata o una sequenza di caratteri combinata. Unicode Standard definisce una coppia surrogata come rappresentazione di caratteri codificati per un singolo carattere astratto costituito da una sequenza di due unità di codice, dove la prima unità della coppia è un surrogato elevato e la seconda è un surrogato basso. Unicode Standard definisce una sequenza di caratteri combinata come combinazione di un carattere di base e uno o più caratteri di combinazione. Una coppia surrogata può rappresentare un carattere di base o un carattere di combinazione.
L'enumeratore di elementi di testo viene usato solo per leggere i dati nella stringa; non può modificare la stringa sottostante. L'enumeratore non ha accesso esclusivo alla stringa.
L'enumeratore è in uno stato non valido se viene posizionato prima del primo elemento di testo nella stringa o dopo l'ultimo elemento di testo nella stringa. Quando l'enumeratore si trova in uno stato non valido, la chiamata Current genera un'eccezione.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento di testo nella stringa. Anche il metodo Reset riporta l'enumeratore in questa posizione. Pertanto, dopo aver creato o dopo Reset la chiamata di un enumeratore, MoveNext è necessario chiamare per avanzare l'enumeratore al primo elemento di testo della stringa prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non viene chiamato il metodo MoveNext o Reset.
Dopo aver passato la fine della stringa, l'enumeratore viene nuovamente in uno stato non valido e la chiamata MoveNext restituisce false
. La chiamata Current genera un'eccezione se l'ultima chiamata a MoveNext restituisce false
.