TextElementEnumerator クラス

定義

文字列のテキスト要素を列挙します。Enumerates the text elements of a string.

public ref class TextElementEnumerator : System::Collections::IEnumerator
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class TextElementEnumerator : System.Collections.IEnumerator
type TextElementEnumerator = class
    interface IEnumerator
Public Class TextElementEnumerator
Implements IEnumerator
継承
TextElementEnumerator
属性
実装

次の例ではTextElementEnumerator 、クラスを使用して、文字列のテキスト要素を列挙します。The following example uses the TextElementEnumerator class to enumerate the text elements of a string.

using namespace System;
using namespace System::Globalization;
int main()
{
   
   // Creates and initializes a String containing the following:
   //   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
   //   - a combining character sequence (the Latin small letter S"a" followed by the combining grave accent)
   //   - a base character (the ligature S"")
   String^ myString = L"\xD800\xDC00"
   L"a\u0300\u00C6";
   
   // Creates and initializes a TextElementEnumerator for myString.
   TextElementEnumerator^ myTEE = StringInfo::GetTextElementEnumerator( myString );
   
   // Displays the values returned by ElementIndex, Current and GetTextElement.
   // Current and GetTextElement return a String* containing the entire text element. 
   Console::WriteLine( "Index\tCurrent\tGetTextElement" );
   myTEE->Reset();
   while ( myTEE->MoveNext() )
      Console::WriteLine( "[{0}]:\t {1}\t {2}", myTEE->ElementIndex, myTEE->Current, myTEE->GetTextElement() );
}

/*
This code produces the following output.  The question marks take the place of high and low surrogates.

Index   Current GetTextElement
[0]:    ??      ??
[2]:    a`      a`
[4]:    Æ       Æ

*/
using System;
using System.Globalization;


public class SamplesTextElementEnumerator  {

   public static void Main()  {

      // Creates and initializes a String containing the following:
      //   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
      //   - a combining character sequence (the Latin small letter "a" followed by the combining grave accent)
      //   - a base character (the ligature "")
      String myString = "\uD800\uDC00\u0061\u0300\u00C6";

      // Creates and initializes a TextElementEnumerator for myString.
      TextElementEnumerator myTEE = StringInfo.GetTextElementEnumerator( myString );

      // Displays the values returned by ElementIndex, Current and GetTextElement.
      // Current and GetTextElement return a string containing the entire text element. 
      Console.WriteLine( "Index\tCurrent\tGetTextElement" );
      myTEE.Reset();
      while (myTEE.MoveNext())  {
         Console.WriteLine( "[{0}]:\t{1}\t{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement() );
      }

   }

}

/*
This code produces the following output.  The question marks take the place of high and low surrogates.

Index   Current GetTextElement
[0]:    ??      ??
[2]:    a`      a`
[4]:    Æ       Æ

*/
Imports System.Globalization

Public Class SamplesTextElementEnumerator

   Public Shared Sub Main()

      ' Creates and initializes a String containing the following:
      '   - a surrogate pair (high surrogate U+D800 and low surrogate U+DC00)
      '   - a combining character sequence (the Latin small letter "a" followed by the combining grave accent)
      '   - a base character (the ligature "")
      Dim myString As String = ChrW(&HD800) & ChrW(&HDC00) & ChrW(&H0061) & ChrW(&H0300) & ChrW(&H00C6)

      ' Creates and initializes a TextElementEnumerator for myString.
      Dim myTEE As TextElementEnumerator = StringInfo.GetTextElementEnumerator( myString )

      ' Displays the values returned by ElementIndex, Current and GetTextElement.
      ' Current and GetTextElement return a string containing the entire text element. 
      Console.WriteLine("Index" + ControlChars.Tab + "Current" + ControlChars.Tab + "GetTextElement")
      myTEE.Reset()
      While myTEE.MoveNext()
         Console.WriteLine("[{0}]:" + ControlChars.Tab + "{1}" + ControlChars.Tab + "{2}", myTEE.ElementIndex, myTEE.Current, myTEE.GetTextElement())
      End While

   End Sub

End Class

'This code produces the following output.  The question marks take the place of high and low surrogates.
'
'Index   Current GetTextElement
'[0]:    ??      ??
'[2]:    a`      a`
'[4]:    Æ       Æ

注釈

.NET Framework は、テキスト要素を1つの文字 (書記素) として表示されるテキストの単位として定義します。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 any of the following:

  • 1つCharの値として表される基本文字。A base character, which is represented as a single Char value. たとえば、ラテン文字の大文字 A (U + 0041 という) とラテン小文字 AE (U + 00E6) は基本文字です。For example, LATIN CAPITAL LETTER A (U+0041) and LATIN SMALL LETTER AE (U+00E6) are base characters.

  • 基本文字と1つ以上の組み合わせ文字で構成される結合文字シーケンス。A combining character sequence, which consists of a base character and one or more combining characters. たとえば、例として、LATIN の大文字 A (U + 0041 という) と、MACRON (U + 0304) を組み合わせた文字のシーケンスがあります。For example, example, LATIN CAPITAL LETTER A (U+0041) followed by COMBINING MACRON (U+0304) is a combining character sequence.

  • サロゲートペア。 Unicode 標準では、上位サロゲートと下位サロゲートという2つのコード単位のシーケンスで構成される単一の抽象文字のコード化された文字表現として定義されます。Surrogate pairs, which the Unicode Standard defines as a coded character representation for a single abstract character that consists of a sequence of two code units: a high surrogate, and a low surrogate. サロゲートペアは、UTF-16 でエンコードされた文字として、Unicode 基本多言語プレーン以外の文字を表すために使用されます。Surrogate pairs are used to represent characters outside of the Unicode Basic Multilingual Plane as UTF-16 encoded characters. たとえば、ゴシック文字の SAUIL (U + 10343) は、値が0xD800 で下位サロゲートで、値が0xDF43 である上位サロゲートとして UTF-16 エンコードで表されます。For example, GOTHIC LETTER SAUIL (U+10343) is represented in UTF-16 encoding as a high surrogate whose value is 0xD800 and a low surrogate whose value is 0xDF43. サロゲートペアは、基本文字または組み合わせ文字を表すことができます。A surrogate pair can represent a base character or a combining character.

クラスを使用すると、単一Charのオブジェクトではなく、文字列のテキスト要素を操作できます。 TextElementEnumeratorThe TextElementEnumerator class allows you to work with the text elements in a string rather than with single Char objects.

文字列をStringInfo.GetTextElementEnumeratorメソッドTextElementEnumeratorに渡すことによって、特定の文字列を表すオブジェクトをインスタンス化します。You instantiate a TextElementEnumerator object that represents a particular string by passing the string to the StringInfo.GetTextElementEnumerator method. これにより、文字列内の最初のテキスト要素の前に配置された列挙子が返されます。This returns an enumerator that is positioned before the first text element in the string. また、 Resetメソッドを呼び出すと、列挙子がこの位置に戻ります。Calling the Reset method also brings the enumerator back to this position. これは無効な状態を表してMoveNext Currentいるため、を呼び出して、列挙子を文字列の最初のテキスト要素に進めてから、プロパティの値を読み取って現在のテキスト要素を返す必要があります。Because this represents an invalid state, you must call MoveNext to advance the enumerator to the first text element of the string before reading the value of the Current property to return the current text element.

TextElementEnumeratorオブジェクトを使用する場合は、列挙子を配置する必要があります。When working with a TextElementEnumerator object, you are responsible for positioning the enumerator. プロパティは、またはResetのいずれかMoveNextを呼び出すまで、同じテキスト要素を返します。 CurrentThe Current property returns the same text element until you call either MoveNext or Reset. 列挙子は、最初のテキスト要素の前、または文字列内の最後のテキスト要素の後に配置されている場合、無効な状態になります。The enumerator is in an invalid state if it is positioned before the first text element or after the last text element in the string. 列挙子の状態が無効である場合、 Currentプロパティの値を取得しようとすると例外がスローされます。When the enumerator is in an invalid state, attempting to retrieve the value of the Current property throws an exception. MoveNextプロパティの戻り値がfalseであるかどうかをテストすることで、列挙子が無効な状態であるかどうかを確認できます。You can determine whether the enumerator is in an invalid state by testing whether the return value of the MoveNext property is false.

オブジェクトは、 TextElementEnumeratorオブジェクトがインスタンス化される時点での文字列変数または文字列リテラルの現在の状態のスナップショットを表します。 TextElementEnumeratorThe TextElementEnumerator object represents a snapshot of the current state of a string variable or string literal at the moment that the TextElementEnumerator object is instantiated. 次の点に注意してください。Note that:

  • テキスト要素の列挙子は、文字列内のデータの読み取りにのみ使用できます。Text element enumerators can only be used to read data in a string. 基になる文字列を変更することはできません。They cannot modify the underlying string.

  • 列挙子には、それが表す文字列への排他アクセス権がありません。An enumerator does not have exclusive access to the string that it represents. 文字列変数は、列挙子の作成後に変更できます。A string variable can be modified after the enumerator is created.

  • オブジェクトは、 TextElementEnumeratorオブジェクトがインスタンス化されたときに文字列内に存在するテキスト要素を列挙します。 TextElementEnumeratorA TextElementEnumerator object enumerates the text elements present in the string at the time that the TextElementEnumerator object was instantiated. 後でその変数が変更された場合、文字列変数に対する後続の変更は反映されません。It does not reflect any subsequent changes to the string variable if that variable is modified afterward.

  • クラスはをオーバーライドObject.Equalsしないため、 TextElementEnumerator同じ文字列を表す2つのオブジェクトが等しくないと見なされます。 TextElementEnumeratorBecause the TextElementEnumerator class does not override Object.Equals, two TextElementEnumerator objects that represent the same string will be considered unequal.

プロパティ

Current

文字列内の現在のテキスト要素を取得します。Gets the current text element in the string.

ElementIndex

列挙子が現在位置しているテキスト要素のインデックスを取得します。Gets the index of the text element that the enumerator is currently positioned over.

メソッド

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetTextElement()

文字列内の現在のテキスト要素を取得します。Gets the current text element in the string.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MoveNext()

列挙子を文字列の次のテキスト要素に進めます。Advances the enumerator to the next text element of the string.

Reset()

列挙子を初期位置、つまり文字列の最初のテキスト要素の前に設定します。Sets the enumerator to its initial position, which is before the first text element in the string.

ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象

こちらもご覧ください