Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase StringInfo

 

Proporciona funciones para dividir una cadena en elementos de texto y procesar en iteración en dichos elementos.

Espacio de nombres:   System.Globalization
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Globalization.StringInfo

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StringInfo

NombreDescripción
System_CAPS_pubmethodStringInfo()

Inicializa una nueva instancia de la clase StringInfo.

System_CAPS_pubmethodStringInfo(String)

Inicializa una nueva instancia de la clase StringInfo con la cadena especificada.

NombreDescripción
System_CAPS_pubpropertyLengthInTextElements

Obtiene el número de elementos de texto del objeto StringInfo actual.

System_CAPS_pubpropertyString

Obtiene o establece el valor del objeto StringInfo actual.

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Indica si el objeto StringInfo actual es igual a un objeto especificado.(Invalida Object.Equals(Object)).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Calcula un código hash para el valor del actual StringInfo objeto.(Invalida Object.GetHashCode()).

System_CAPS_pubmethodSystem_CAPS_staticGetNextTextElement(String)

Obtiene el primer elemento de texto en una cadena especificada.

System_CAPS_pubmethodSystem_CAPS_staticGetNextTextElement(String, Int32)

Obtiene el elemento de texto en el índice especificado de la cadena especificada.

System_CAPS_pubmethodSystem_CAPS_staticGetTextElementEnumerator(String)

Devuelve un enumerador que recorre en iteración los elementos de toda la cadena de texto.

System_CAPS_pubmethodSystem_CAPS_staticGetTextElementEnumerator(String, Int32)

Devuelve un enumerador que recorre en iteración los elementos de texto de la cadena, empezando en el índice especificado.

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodSystem_CAPS_staticParseCombiningCharacters(String)

Devuelve los índices de cada carácter base, suplente alto o carácter de control de la cadena especificada.

System_CAPS_pubmethodSubstringByTextElements(Int32)

Recupera una subcadena de elementos de texto de la actual StringInfo objeto a partir de un elemento de texto especificado y continuando hasta el último elemento de texto.

System_CAPS_pubmethodSubstringByTextElements(Int32, Int32)

Recupera una subcadena de elementos de texto de la actual StringInfo a partir de un elemento de texto especificado y continuando hasta el número especificado de elementos de texto del objeto.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

.NET Framework define un elemento de texto como una unidad de texto que se muestra como un carácter único, es decir, un grafemas. Un elemento de texto puede ser un carácter base, un par suplente o un carácter combinable secuencia. El Unicode Standard define un par suplente como una representación de caracteres codificados para un único carácter abstracto que consta de una secuencia de dos unidades de código, donde la primera unidad del par es un suplente alto y el segundo es un suplente bajo. El estándar Unicode define una combinación secuencia como una combinación de un carácter base y uno o más caracteres de combinación de caracteres. Un par suplente puede representar un carácter base o un carácter combinable.

El StringInfo clase le permite trabajar con una cadena como una serie de elementos de texto en lugar de individuales Char objetos.

Para crear instancias de un StringInfo objeto que representa una cadena especificada, puede realizar cualquiera de las siguientes acciones:

  • Llame a la StringInfo(String) constructor y pasarle la cadena que el StringInfo objeto que se va a representar como un argumento.

  • Llame a la opción predeterminada StringInfo() constructor y asignar la cadena que el StringInfo objeto que se va a representar para el String propiedad.

Puede trabajar con los elementos de texto individuales en una cadena de dos maneras:

  • Con una enumeración de cada elemento de texto. Para ello, se llama a la GetTextElementEnumerator (método) y, a continuación, llamar repetidamente a la MoveNext método en el valor devuelto TextElementEnumerator objeto hasta que el método devuelve false.

  • Mediante una llamada a la ParseCombiningCharacters método para recuperar una matriz que contiene el índice inicial de cada elemento de texto. Puede recuperar los elementos de texto individuales pasando estos índices para la SubstringByTextElements método.

En el ejemplo siguiente se muestra dos maneras de trabajar con los elementos de texto en una cadena. Se crean dos cadenas:

  • strCombining, que es una cadena de caracteres árabes que incluye tres elementos de texto con varios Char objetos. El primer elemento de texto es el carácter base Letra árabe ALEF (U +-627) seguido por árabe HAMZA debajo (U +-655) y KASRA árabe (u+0650). El segundo elemento de texto es Letra árabe HEH (0647) seguido por FATHA árabe (U +-64E). El tercer elemento de texto es árabe BEH LETTTER (0628) seguido por DAMMATAN árabe (U + 064C).

  • strSurrogates, que es una cadena que incluye tres pares suplentes: GRIEGO ACROPHONIC cinco TALENTOS (10148) desde el plano multilingüe complementarios, 20026 U + en el plano ideográficos complementarios y U + F1001 desde el área de usuario privados. La codificación UTF-16 de cada carácter es un par suplente que está formada por un suplente alto seguido por un suplente bajo.

Cada cadena se analiza una vez el ParseCombiningCharacters método y, a continuación, por el GetTextElementEnumerator método. Ambos métodos correctamente analizan los elementos de texto en las dos cadenas y mostrar los resultados de la operación de análisis.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // The Unicode code points specify Arabic base characters and 
      // combining character sequences.
      string strCombining = "\u0627\u0655\u0650\u064A\u0647\u064E" +
                            "\u0627\u0628\u064C";

      // The Unicode code points specify private surrogate pairs.
      string strSurrogates = Char.ConvertFromUtf32(0x10148) +
                             Char.ConvertFromUtf32(0x20026) + "a" +
                             Char.ConvertFromUtf32(0xF1001);

      EnumerateTextElements(strCombining);
      EnumerateTextElements(strSurrogates);
   }

   public static void EnumerateTextElements(string str)
   {
      // Get the Enumerator.
      TextElementEnumerator teEnum = null;      

      // Parse the string using the ParseCombiningCharacters method.
      Console.WriteLine("\nParsing with ParseCombiningCharacters:");
      int[] teIndices = StringInfo.ParseCombiningCharacters(str);

      for (int i = 0; i < teIndices.Length; i++) {
         if (i < teIndices.Length - 1)
            Console.WriteLine("Text Element {0} ({1}..{2})= {3}", i, 
               teIndices[i], teIndices[i + 1] - 1, 
               ShowHexValues(str.Substring(teIndices[i], teIndices[i + 1] - 
                             teIndices[i])));
         else
            Console.WriteLine("Text Element {0} ({1}..{2})= {3}", i, 
               teIndices[i], str.Length - 1, 
               ShowHexValues(str.Substring(teIndices[i])));
      }
      Console.WriteLine();

      // Parse the string with the GetTextElementEnumerator method.
      Console.WriteLine("Parsing with TextElementEnumerator:");
      teEnum = StringInfo.GetTextElementEnumerator(str);

      int teCount = - 1;

      while (teEnum.MoveNext()) {
         // Displays the current element.
         // Both GetTextElement() and Current retrieve the current
         // text element. The latter returns it as an Object.
         teCount++;
         Console.WriteLine("Text Element {0} ({1}..{2})= {3}", teCount, 
            teEnum.ElementIndex, teEnum.ElementIndex + 
            teEnum.GetTextElement().Length - 1, ShowHexValues((string)(teEnum.Current)));
      }
   }

   private static string ShowHexValues(string s)
   {
      string hexString = "";
      foreach (var ch in s)
         hexString += String.Format("{0:X4} ", Convert.ToUInt16(ch));

      return hexString;
   }
}
// The example displays the following output:
//       Parsing with ParseCombiningCharacters:
//       Text Element 0 (0..2)= 0627 0655 0650
//       Text Element 1 (3..3)= 064A
//       Text Element 2 (4..5)= 0647 064E
//       Text Element 3 (6..6)= 0627
//       Text Element 4 (7..8)= 0628 064C
//       
//       Parsing with TextElementEnumerator:
//       Text Element 0 (0..2)= 0627 0655 0650
//       Text Element 1 (3..3)= 064A
//       Text Element 2 (4..5)= 0647 064E
//       Text Element 3 (6..6)= 0627
//       Text Element 4 (7..8)= 0628 064C
//       
//       Parsing with ParseCombiningCharacters:
//       Text Element 0 (0..1)= D800 DD48
//       Text Element 1 (2..3)= D840 DC26
//       Text Element 2 (4..4)= 0061
//       Text Element 3 (5..6)= DB84 DC01
//       
//       Parsing with TextElementEnumerator:
//       Text Element 0 (0..1)= D800 DD48
//       Text Element 1 (2..3)= D840 DC26
//       Text Element 2 (4..4)= 0061
//       Text Element 3 (5..6)= DB84 DC01

Notas para llamadores:

Internamente, los métodos de la StringInfo clase llamar a los métodos de la CharUnicodeInfo clase para determinar las categorías de caracteres. A partir de la .NET Framework 4.6.2, clasificación de caracteres se basa en The Unicode Standard, Version 8.0.0. Para el .NET Framework 4 a través de la .NET Framework 4.6.1, se basa en The Unicode Standard, Version 6.3.0.

Este ejemplo muestra cómo utilizar el GetTextElementEnumerator y ParseCombiningCharacters métodos de la StringInfo clase para manipular una cadena que contiene caracteres suplentes y combinables.

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 '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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: