この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

StringInfo クラス

 

文字列をテキスト要素に分割し、そのテキスト要素を反復処理する機能を提供します。

名前空間:   System.Globalization
アセンブリ:  mscorlib (mscorlib.dll 内)

System.Object
  System.Globalization.StringInfo

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

名前説明
System_CAPS_pubmethodStringInfo()

StringInfo クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodStringInfo(String)

StringInfo クラスの新しいインスタンスを指定した文字列に初期化します。

名前説明
System_CAPS_pubpropertyLengthInTextElements

現在の StringInfo オブジェクト内のテキスト要素数を取得します。

System_CAPS_pubpropertyString

現在の StringInfo オブジェクトの値を取得または設定します。

名前説明
System_CAPS_pubmethodEquals(Object)

現在の StringInfo オブジェクトが指定されたオブジェクトと等しいかどうかを示します。(Object.Equals(Object) をオーバーライドします。)

System_CAPS_protmethodFinalize()

オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

現在の値のハッシュ コードを計算 StringInfo オブジェクトです。(Object.GetHashCode() をオーバーライドします。)

System_CAPS_pubmethodSystem_CAPS_staticGetNextTextElement(String)

指定した文字列の最初のテキスト要素を取得します。

System_CAPS_pubmethodSystem_CAPS_staticGetNextTextElement(String, Int32)

指定した文字列の指定したインデックス位置のテキスト要素を取得します。

System_CAPS_pubmethodSystem_CAPS_staticGetTextElementEnumerator(String)

文字列全体のテキスト要素を反復処理する列挙子を返します。

System_CAPS_pubmethodSystem_CAPS_staticGetTextElementEnumerator(String, Int32)

指定したインデックスから始まる文字列のテキスト要素を反復処理する列挙子を返します。

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodSystem_CAPS_staticParseCombiningCharacters(String)

各基本文字、上位サロゲートまたは指定した文字列内の制御文字のインデックスを返します。

System_CAPS_pubmethodSubstringByTextElements(Int32)

現在のテキスト要素の部分文字列を取得 StringInfo オブジェクトの指定されたテキスト要素を起点としてとテキストの最後の要素までです。

System_CAPS_pubmethodSubstringByTextElements(Int32, Int32)

現在のテキスト要素の部分文字列を取得 StringInfo オブジェクトの指定されたテキスト要素を起点として、指定したテキストの要素数までです。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

.NET Framework では、単一の文字、つまり、書記素として表示されるテキストの単位としてテキスト要素を定義します。 テキストの要素は、基本文字、サロゲート ペア、または組み合わせ文字シーケンスです。 Unicode Standard 、場所のペアの最初の単位が上位サロゲート、2 番目の下位サロゲートの 2 つのコード単位のシーケンスで構成される単一の抽象文字のコード化文字表現として、サロゲート ペアを定義します。 Unicode 標準定義組み合わせ文字のシーケンスとして基本文字と 1 つまたは複数の結合文字の組み合わせ。 サロゲート ペアは、基本文字または組み合わせ文字を表すことができます。

StringInfoクラスでは、個人ではなく、テキスト要素の系列として文字列を使用できます。Charオブジェクト。

インスタンスを作成する、StringInfo指定した文字列を表す、次のいずれかを行うことができます。

  • 呼び出す、StringInfo(String)コンス トラクター、文字列を渡すとする、StringInfoオブジェクトは、引数として表すことです。

  • 既定値を呼び出すStringInfo()コンス トラクター、文字列を割り当てると、StringInfoを表すオブジェクトをStringプロパティです。

2 つの方法で文字列内の個々 のテキスト要素を使用することができます。

  • で、それぞれのテキスト要素を列挙しています。 これを行うを呼び出す、GetTextElementEnumeratorメソッドを繰り返し呼び出しと、MoveNextメソッドで返されたTextElementEnumeratorオブジェクトのメソッドが戻るまでfalseです。

  • 呼び出して、ParseCombiningCharactersをそれぞれのテキスト要素の開始インデックスを含む配列を取得します。 これらのインデックスを渡すことによって、個々 のテキスト要素を取得することができますし、SubstringByTextElementsメソッドです。

次の例では、文字列内のテキスト要素の操作の両方の方法を示します。 これには、2 つの文字列を作成します。

  • strCombining、複数の 3 つのテキスト要素を含むアラビア語の文字の文字列であるCharオブジェクト。 テキストの最初の要素は、基本文字アラビア語文字 ALEF (U +0-627) アラビア語 HAMZA 下続けて (U +0-655) と KASRA アラビア語 (U +0 0650)。 2 つ目のテキスト要素は、アラビア語の文字も (U +0 0647) アラビア語 FATHA 続けて (U +0-64E)。 3 番目のテキスト要素は、アラビア語の LETTTER BEH (U +0 0628) アラビア語 DAMMATAN (U +0 064 C) が続きます。

  • strSurrogates、次の 3 つのサロゲート ペアを含む文字列である: ギリシャ語 ACROPHONIC 5 才能 (U +0 10148) 補助多言語面 U +0、補助表意文字平面とプライベート ユーザー領域から U + F1001 から 20026 からです。 各文字の utf-16 エンコーディングは、サロゲート ペアの下位サロゲート続けて上位サロゲートで構成されます。

によって各文字列が 1 回解析、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

呼び出し時の注意:

内部では、メソッド、StringInfoクラスのメソッドを呼び出す、CharUnicodeInfo文字のカテゴリを決めるクラスをします。 以降で、 .NET Framework 4.6.2、文字の分類がに基づいてThe Unicode Standard, Version 8.0.0です。.NET Framework&4;を通じて、 .NET Framework 4.6.1、基にしてThe Unicode Standard, Version 6.3.0です。

この例を使用して、GetTextElementEnumeratorParseCombiningCharactersのメソッド、StringInfoサロゲートと組み合わせ文字を含む文字列を操作するクラス。

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 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: