StringInfo Class
Provides functionality to split a string into text elements and to iterate through those text elements.
Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)
The StringInfo type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | StringInfo() | Initializes a new instance of the StringInfo class. |
![]() ![]() ![]() ![]() | StringInfo(String) | Initializes a new instance of the StringInfo class to a specified string. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | LengthInTextElements | Gets the number of text elements in the current StringInfo object. |
![]() ![]() ![]() ![]() | String | Gets or sets the value of the current StringInfo object. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | Equals | Indicates whether the current StringInfo object is equal to a specified object. (Overrides Object.Equals(Object).) |
![]() ![]() ![]() ![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() ![]() ![]() ![]() | GetHashCode | Calculates a hash code for the value of the current StringInfo object. (Overrides Object.GetHashCode().) |
![]() ![]() ![]() ![]() ![]() | GetNextTextElement(String) | Gets the first text element in a specified string. |
![]() ![]() ![]() ![]() ![]() | GetNextTextElement(String, Int32) | Gets the text element at the specified index of the specified string. |
![]() ![]() ![]() ![]() ![]() | GetTextElementEnumerator(String) | Returns an enumerator that iterates through the text elements of the entire string. |
![]() ![]() ![]() ![]() ![]() | GetTextElementEnumerator(String, Int32) | Returns an enumerator that iterates through the text elements of the string, starting at the specified index. |
![]() ![]() ![]() ![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() ![]() ![]() ![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() ![]() ![]() ![]() ![]() | ParseCombiningCharacters | Returns the indexes of each base character, high surrogate, or control character within the specified string. |
![]() | SubstringByTextElements(Int32) | Retrieves a substring of text elements from the current StringInfo object starting from a specified text element and continuing through the last text element. |
![]() | SubstringByTextElements(Int32, Int32) | Retrieves a substring of text elements from the current StringInfo object starting from a specified text element and continuing through the specified number of text elements. |
![]() ![]() ![]() ![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
The .NET Framework defines a text element as a unit of text that is displayed as a single character, that is, a grapheme. A text element can be a base character, a surrogate pair, or a combining character sequence. The Unicode Standard defines a surrogate pair as a coded character representation for a single abstract character that consists of a sequence of two code units, where the first unit of the pair is a high surrogate and the second is a low surrogate. The Unicode Standard defines a combining character sequence as a combination of a base character and one or more combining characters. A surrogate pair can represent a base character or a combining character.
This example shows how to use the GetTextElementEnumerator and ParseCombiningCharacters methods of the StringInfo class to manipulate a string that contains surrogate and combining characters.
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
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.






