Freigeben über


StringInfo.ParseCombiningCharacters(String) Methode

Definition

Gibt die Indizes jedes Basiszeichens, eines hohen Ersatzzeichens oder eines Steuerelements innerhalb der angegebenen Zeichenfolge zurück.

public:
 static cli::array <int> ^ ParseCombiningCharacters(System::String ^ str);
public static int[] ParseCombiningCharacters(string str);
static member ParseCombiningCharacters : string -> int[]
Public Shared Function ParseCombiningCharacters (str As String) As Integer()

Parameter

str
String

Die zu durchsuchende Zeichenfolge.

Gibt zurück

Int32[]

Ein Array mit ganzen Zahlen, die die nullbasierten Indizes jedes Basiszeichens, eines hohen Ersatzzeichens oder eines Steuerelementzeichens innerhalb der angegebenen Zeichenfolge enthalten.

Ausnahmen

str ist null.

Beispiele

Im folgenden Beispiel wird das Aufrufen der ParseCombiningCharacters Methode veranschaulicht. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die StringInfo Klasse bereitgestellt wird.

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

Hinweise

Der Unicode-Standard definiert ein Ersatzpaar als codierte Zeichendarstellung für ein einzelnes abstraktes Zeichen, das aus einer Abfolge von zwei Codeeinheiten besteht, wobei die erste Einheit des Paars ein hoher Ersatz ist und der zweite ein niedriger Ersatz ist. Ein hoher Ersatz ist ein Unicode-Codepunkt im Bereich U+D800 bis U+DBFF und ein niedriger Ersatz ist ein Unicode-Codepunkt im Bereich U+DC00 bis U+DFFF.

Ein Steuerzeichen ist ein Zeichen, für das der Unicode-Wert U+007F oder im Bereich U+0000 bis U+001F oder U+0080 bis U+009F ist.

.NET definiert ein Textelement als Eine Texteinheit, die als einzelnes Zeichen angezeigt wird, d. h. als Grapheme. Ein Textelement kann ein Basiszeichen, ein Ersatzpaar oder eine kombinierte Zeichenfolge sein. Der Unicode-Standard definiert eine kombinationsierende Zeichenfolge als Kombination aus einem Basiszeichen und einem oder mehreren kombinierten Zeichen. Ein Ersatzpaar kann ein Basiszeichen oder ein kombiniertes Zeichen darstellen.

Wenn eine kombinierte Zeichenfolge ungültig ist, wird auch jedes kombinierte Zeichen in dieser Sequenz zurückgegeben.

Jeder Index im resultierenden Array ist der Anfang eines Textelements, d. h. der Index des Basiszeichens oder des hohen Ersatzes.

Die Länge der einzelnen Elemente wird leicht als Differenz zwischen aufeinander folgenden Indizes berechnet. Die Länge des Arrays ist immer kleiner oder gleich der Länge der Zeichenfolge. Bei der Zeichenfolge "\u4f00\u302a\ud800\udc00\u4f01" gibt diese Methode beispielsweise die Indizes 0, 2 und 4 zurück.

Gleichwertige Elemente

Ab Version 2.0 von .NET Framework bieten die SubstringByTextElements Methode und LengthInTextElements Eigenschaft eine einfache Implementierung der funktionalität, die von der ParseCombiningCharacters Methode angeboten wird.

Gilt für:

Weitere Informationen