Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

StringInfo - класс

Предоставляет функциональные возможности для разбиения строки на текстовые элементы и итерации по этим элементам.

Пространство имен:  System.Globalization
Сборка:  mscorlib (в mscorlib.dll)

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

Тип StringInfo предоставляет следующие члены.

  ИмяОписание
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsStringInfo()Инициализирует новый экземпляр класса StringInfo.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsStringInfo(String)Инициализирует новый экземпляр класса StringInfo с в указанную строку.
В начало страницы

  ИмяОписание
Открытое свойствоПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsLengthInTextElementsВозвращает количество элементов текста в текущем объекте StringInfo.
Открытое свойствоПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsStringВозвращает или задает значение текущего объекта StringInfo object.
В начало страницы

  ИмяОписание
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsEqualsУказывает, равен ли текущий объект StringInfo указанному объекту. (Переопределяет Object.Equals(Object).)
Защищенный методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsFinalize Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.)
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetHashCodeРассчитывает хэш-код для значения текущего объекта StringInfo. (Переопределяет Object.GetHashCode().)
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetNextTextElement(String)Возвращает первый текстовый элемент в заданной строке.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetNextTextElement(String, Int32)Возвращает элемент текста по указанному индексу заданной строки.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetTextElementEnumerator(String)Возвращает перечислитель, который выполняет итерацию по текстовым элементам всей строки.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetTextElementEnumerator(String, Int32)Возвращает перечислитель, который может выполнять итерацию по текстовым элементам строки, начиная с указанного индекса.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetTypeВозвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
Защищенный методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsMemberwiseClone Создает неполную копию текущего объекта Object. (Унаследовано от Object.)
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsParseCombiningCharactersВозвращает индексы каждого базового знака, старший символ-заместитель или знак элемента управления в пределах указанной строки.
Открытый методSubstringByTextElements(Int32)Получает подстроку элементов текста из текущего объекта StringInfo, начиная с указанного элемента текста и продолжая до самого последнего элемента.
Открытый методSubstringByTextElements(Int32, Int32)Получает подстроку элементов текста из текущего объекта StringInfo, начиная с указанного элемента текста и продолжая до указанного количества элементов текста.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsToStringВозвращает строку, представляющую текущий объект. (Унаследовано от Object.)
В начало страницы

Платформа .NET Framework определяет текстовый элемент как единицу текста, отображаемую одним знаком, или графему. Текстовый элемент может быть базовым символом, парой символов-заместителей или последовательностью несамостоятельных знаков. Стандарт Юникод определяет пару символов-заместителей как кодовое представление знака для одного обобщенного знака, состоящего из двух частей кода, где первая и вторая части пары являются соответственно старшим и младшим символами-заместителями. Стандарт Юникод определяет последовательность несамостоятельных знаков как сочетание базового знака и одного или более несамостоятельных знаков. Пара символов-заместителей может представлять базовый или присоединяемый знак.

Класс StringInfo позволяет работать со строкой текстуальных как набор элементов, а не объекты Char отдельные. Для работы с отдельными текстовыми элементами в строку 2 двумя способами:

  • Перечисление, каждый текстовый элемент. Для этого не будет вызван метод GetTextElementEnumerator, а затем повторно будет вызывать метод MoveNext для возвращенного объекта TextElementEnumerator до тех пор, пока метод возвращает false.

  • Путем вызова метода ParseCombiningCharacters для извлечения массив, содержащий начальный индекс каждого текстового элемента. Затем можно извлечь отдельные текстовые элементы путем передачи этих индексов в метод SubstringByTextElements.

В следующем примере показаны оба способа работы с текстовыми элементами в строке. Он создает 2 строк.

  • strCombining, строка арабских символов, содержит 3 текстового элемента с несколькими объектами Char. Первый текстовый элемент БУКВА ALEF базового знака АРАБСКАЯ (U+-627) и АРАБСКИМ HAMZA НИЖЕ (U+-655) и АРАБСКИМ KASRA (U+0650). Второй текстовый элемент АРАБСКАЯ БУКВА HEH (U+0647) и АРАБСКИМ FATHA (U+-64E). Третий текстовый элемент АРАБСКОЕ LETTTER BEH (U+0628) и АРАБСКИМ DAMMATAN U+064C (-).

  • strSurrogates, строка, которая содержит 3 суррогатных пар: ГРЕЧЕСКИЕ ТАЛАНТЫ ACROPHONIC 5 (U+10148) из дополнительных разноязычного самолета, U+20026 из дополнительных идеографического самолета и U+F1001 частной из зоны пользователя. Кодирования UTF-16 каждого символа суррогатная пара, состоящая из высокого суррогатный с низким символов-заместителем.

Каждая строка анализируется один раз методом ParseCombiningCharacters и затем методом GetTextElementEnumerator. Оба метода правильно анализируют текстовые элементы в 2 строк и отображают результаты операции анализа.


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


В этом примере показано, как использовать методы GetTextElementEnumerator и ParseCombiningCharacters класса StringInfo class для обработки строки, содержащую суррогатные и присоединяемые знаки.


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

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: 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 с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

Добавления сообщества

Показ:
© 2014 Microsoft