StringInfo.ParseCombiningCharacters(String) Methode

Definitie

Retourneert de indexen van elk basisteken, hoog surrogaat of besturingsteken binnen de opgegeven tekenreeks.

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

Parameters

str
String

De tekenreeks die moet worden gezocht.

Retouren

Int32[]

Een matrix van gehele getallen die de op nul gebaseerde indexen van elk basisteken, hoog surrogaat of besturingsteken binnen de opgegeven tekenreeks bevat.

Uitzonderingen

str is null.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de ParseCombiningCharacters methode aanroept. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de StringInfo klasse.

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

Opmerkingen

De Unicode-standaard definieert een surrogaatpaar als een gecodeerde tekenweergave voor één abstract teken dat bestaat uit een reeks van twee code-eenheden, waarbij de eerste eenheid van het paar een hoog surrogaat is en de tweede een laag surrogaat is. Een hoog surrogaat is een Unicode-codepunt in het bereik U+D800 tot en met U+DBFF en een laag surrogaat is een Unicode-codepunt in het bereik U+DC00 tot en met U+DFFF.

Een besturingselementteken is een teken waarvan de Unicode-waarde U+007F is of in het bereik U+0000 tot en met U+001F of U+0080 tot en met U+009F.

.NET definieert een tekstelement als een teksteenheid die wordt weergegeven als één teken, dat wil gezegd een grafeme. Een tekstelement kan een basisteken, een surrogaatpaar of een combinatietekenreeks zijn. De Unicode-standaard definieert een combinatietekenreeks als een combinatie van een basisteken en een of meer combinaties van tekens. Een surrogaatpaar kan een basisteken of een combinatieteken vertegenwoordigen.

Als een combinatietekenreeks ongeldig is, wordt ook elk combinatieteken in die reeks geretourneerd.

Elke index in de resulterende matrix is het begin van een tekstelement, dat wil weten de index van het basisteken of het hoge surrogaat.

De lengte van elk element wordt eenvoudig berekend als het verschil tussen opeenvolgende indexen. De lengte van de matrix is altijd kleiner dan of gelijk aan de lengte van de tekenreeks. Als u bijvoorbeeld de tekenreeks\u4f00\u302a\ud800\udc00\u4f01, retourneert deze methode de indexen 0, 2 en 4.

Gelijkwaardige leden

Vanaf versie 2.0 van het .NET Framework bieden de methode SubstringByTextElements en LengthInTextElements een gebruiksvriendelijke implementatie van de functionaliteit die wordt aangeboden door de methode ParseCombiningCharacters.

Van toepassing op

Zie ook