本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文
資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

StringInfo 類別

提供將字串分隔為文字項目並逐一查看那些文字項目的功能。

System.Object
  System.Globalization.StringInfo

命名空間:  System.Globalization
組件:  mscorlib (在 mscorlib.dll 中)

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

StringInfo 類型會公開下列成員。

  名稱描述
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援StringInfo()初始化 StringInfo 類別的新執行個體。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援StringInfo(String)StringInfo 類別的新執行個體 (Instance) 初始化為指定的字串。
回頁首

  名稱描述
公用屬性受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援LengthInTextElements取得目前 StringInfo 物件中的文字項目數目。
公用屬性受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援String取得或設定目前 StringInfo 物件的值。
回頁首

  名稱描述
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Equals指示目前的 StringInfo 物件是否等於指定的物件。 (覆寫 Object.Equals(Object)。)
受保護的方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Finalize 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetHashCode計算目前 StringInfo 物件值的雜湊碼。 (覆寫 Object.GetHashCode()。)
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetNextTextElement(String)取得指定字串中的第一個文字項目。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetNextTextElement(String, Int32)取得在指定字串中指定索引處的文字項目。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetTextElementEnumerator(String)傳回可以逐一查看整個字串文字項目的列舉值。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetTextElementEnumerator(String, Int32)傳回可以從指定索引處開始來逐一查看字串文字項目的列舉值。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetType取得目前執行個體的 Type (繼承自 Object)。
受保護的方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援MemberwiseClone建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 Object)。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援ParseCombiningCharacters傳回所指定字串內各個基底字元、高 Surrogate 或控制字元的索引。
公用方法SubstringByTextElements(Int32)在目前的 StringInfo 物件中擷取文字項目的子字串,範圍從指定的文字項目開始,一直持續到最後一個文字項目。
公用方法SubstringByTextElements(Int32, Int32)在目前 StringInfo 物件中擷取文字項目的子字串,範圍從指定的文字項目開始,一直持續到指定的文字項目數目。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援ToString傳回表示目前物件的字串。 (繼承自 Object)。
回頁首

.NET Framework 將一個文字項目定義為一個文字單位,會顯示為單一字元,也就是字母。 文字項目可以是基底字元、Surrogate 字組或組合字元序列。 Unicode 標準將 Surrogate 字組定義為單一抽象字元的編碼字元表示,此抽象字元是由兩個程式碼單位序列所組成,字組中的第一個單位為高 Surrogate,第二個為低 Surrogate。 Unicode Standard 將結合字元序列定義為基底字元和一個或多個結合字元的組合。 Surrogate 字組可以表示基底字元或組合字元

StringInfo 類別可讓您將字串當做一連串的文字項目 (而非個別儲存格的 Char 物件。 您可以在字串中個別文字項目一起使用的方法有兩種:

下列範例說明這兩種方式與在字串文字項目一起使用。 它會建立兩個字串:

  • strCombining,為阿拉伯文字元字串包含與多個 Char 物件的三個文字項目。 第一個文字項目是 HAMZA 阿拉伯文 (U+-655) 和下面阿拉伯文 KASRA (U+-627) 後面的基底字元阿拉伯字母 ALEF 語言 (U+0650)。 第二個文字項目為阿拉伯 FATHA 呵 (U+0647) 後面接著阿拉伯字母 (U+-64E)。 第三個文字項目為阿拉伯 DAMMATAN BEH (U+0628) 後面接著阿拉伯 LETTTER (U+064C)。

  • strSurrogates,為字串包含三個 Surrogate 字組:希臘文 ACROPHONIC 五從補充表意文字平面的天分 (U+10148) 從補充多語系平面,從私用使用者區域的 U+20026 和 U+F1001。 每個字元的 UTF-16 編碼為低 Surrogate 後面接著一個高 Surrogate 的 Surrogate 字組。

每一個字串剖析為 ParseCombiningCharacters 方法會使用 GetTextElementEnumerator 方法。 這兩種方法可正確剖析在兩個字串的文字項目並顯示剖析作業的結果。


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


這個範例顯示如何使用 StringInfo 類別的 GetTextElementEnumeratorParseCombiningCharacters 方法,來管理包含 Surrogate 字元和結合字元的字串。


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 Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本: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 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。

社群新增項目

顯示:
© 2015 Microsoft