Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Classe StringInfo
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe StringInfo

Fornisce la funzionalità per suddividere una stringa in elementi di testo e per scorrere tali elementi.

System.Object
  System.Globalization.StringInfo

Spazio dei nomi:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

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

Il tipo StringInfo espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreStringInfo()Inizializza una nuova istanza della classe StringInfo.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreStringInfo(String)Inizializza una nuova istanza della classe StringInfo sulla stringa specificata.
In alto

  NomeDescrizione
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreLengthInTextElementsOttiene il numero di elementi di testo nell'oggetto StringInfo corrente.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreStringOttiene o imposta il valore dell'oggetto StringInfo corrente.
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEqualsIndica se l'oggetto StringInfo corrente è uguale a un oggetto specificato. (Esegue l'override di Object.Equals(Object)).
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCodeCalcola un codice hash per il valore dell'oggetto StringInfo corrente. (Esegue l'override di Object.GetHashCode()).
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetNextTextElement(String)Ottiene il primo elemento di testo in una stringa specificata.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetNextTextElement(String, Int32)Ottiene l'elemento di testo in corrispondenza dell'indice specificato della stringa indicata.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetTextElementEnumerator(String)Restituisce un enumeratore che consente di scorrere gli elementi di testo dell'intera stringa.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetTextElementEnumerator(String, Int32)Restituisce un enumeratore che consente di scorrere gli elementi di testo della stringa, a partire dall'indice specificato.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParseCombiningCharactersRestituisce gli indici di ciascun carattere base, surrogato alto o carattere di controllo all'interno della stringa specificata.
Metodo pubblicoSubstringByTextElements(Int32)Recupera una sottostringa degli elementi di testo dall'oggetto StringInfo corrente a partire da un elemento di testo specificato fino all'ultimo elemento di testo.
Metodo pubblicoSubstringByTextElements(Int32, Int32)Recupera una sottostringa di elementi di testo dall'oggetto StringInfo corrente a partire da un elemento di testo specificato fino al numero specificato di elementi di testo.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

In .NET Framework, un elemento di testo viene considerato un'unità testuale visualizzata come un singolo carattere, ovvero un grafema. Un elemento di testo può essere un carattere base, una coppia di surrogati o una sequenza di caratteri in combinazione. Lo standard Unicode definisce una coppia di surrogati come la rappresentazione in caratteri codificati di un singolo carattere astratto, costituita da una sequenza di due unità di codice, in cui la prima unità della coppia è un surrogato alto e la seconda è un surrogato basso. In Unicode una sequenza di caratteri in combinazione viene definita come una combinazione di un carattere base e uno o più caratteri in combinazione. Una coppia di surrogati può rappresentare un carattere base o un carattere di combinazione.

La classe StringInfo consente di utilizzare una stringa come una serie di elementi di testo anziché di singoli oggetti Char. È possibile utilizzare i singoli elementi di testo in una stringa in due modi:

Nell'esempio seguente vengono illustrate entrambe le modalità di utilizzo degli elementi di testo in una stringa. Vengono create due stringhe:

  • strCombining, una stringa di caratteri arabi contenente tre elementi di testo con più oggetti Char. Il primo elemento di testo è il carattere di base LETTERA ARABA ALEF (U+-627) seguita da HAMZA ARABO SOTTO (U+-655) e KASRA ARABO (U+0650). Il secondo elemento di testo è la LETTERA ARABA HEH (U+0647) seguita da FATHA ARABO (U+-64E). Il terzo elemento di testo è la LETTERA ARABA BEH (U+0628) seguito da DAMMATAN ARABO (U+064C).

  • strSurrogates, una stringa che include tre coppie di surrogati: ACROPHONIC GRECO FIVE TALENTS (U+10148) dal Piano multilingue supplementare, U+20026 dal Piano ideografico supplementare e U+F1001 dall'area privata dell'utente. La codifica UTF-16 di ciascun carattere è una coppia di surrogati costituita da un surrogato alto seguito da un surrogato basso.

Ogni stringa viene analizzata una volta dal metodo ParseCombiningCharacters e poi dal metodo GetTextElementEnumerator. Entrambi i metodi analizzano correttamente gli elementi di testo nelle due stringhe e visualizzano i risultati dell'operazione di analisi.


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


In questo esempio viene illustrato come utilizzare i metodi GetTextElementEnumerator e ParseCombiningCharacters della classe StringInfo per gestire una stringa che contiene caratteri surrogati e di combinazione.


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


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft