エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

StringBuilder クラス

2013/12/12

可変型の文字列を表します。このクラスは継承できません。

System.Object
  System.Text.StringBuilder

Namespace:  System.Text
アセンブリ:  mscorlib (mscorlib.dll 内)

public sealed class StringBuilder

StringBuilder 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドStringBuilder()StringBuilder クラスの新しいインスタンスを初期化します。
パブリック メソッドStringBuilder(Int32)指定した容量を使用して、StringBuilder クラスの新しいインスタンスを初期化します。
パブリック メソッドStringBuilder(String)指定した文字列を使用して、StringBuilder クラスの新しいインスタンスを初期化します。
パブリック メソッドStringBuilder(Int32, Int32)指定した容量で始まり、指定した最大容量まで大きくなる StringBuilder クラスの新しいインスタンスを初期化します。
パブリック メソッドStringBuilder(String, Int32)指定した文字列および容量を使用して、StringBuilder クラスの新しいインスタンスを初期化します。
パブリック メソッドStringBuilder(String, Int32, Int32, Int32)指定した部分文字列および容量から StringBuilder クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティCapacity現在のインスタンスによって割り当てられたメモリに格納できる最大文字数を取得または設定します。
パブリック プロパティCharsこのインスタンス内の指定した文字位置の文字を取得または設定します。
パブリック プロパティLength現在の StringBuilder オブジェクトの長さを取得または設定します。
パブリック プロパティMaxCapacityこのインスタンスの最大容量を取得します。
このページのトップへ

  名前説明
パブリック メソッドAppend(Boolean)指定したブール値の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(Byte)このインスタンスの最後に、指定した 8 ビット符号なし整数の文字列表記を追加します。
パブリック メソッドAppend(Char)指定した Unicode 文字の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(Char[])指定した配列の Unicode 文字の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(Decimal)指定した 10 進数の文字列形式をこのインスタンスに追加します。
パブリック メソッドAppend(Double)指定した倍精度浮動小数点数の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(Int16)このインスタンスの最後に、指定した 16 ビット符号付き整数の文字列表記を追加します。
パブリック メソッドAppend(Int32)このインスタンスの最後に、指定した 32 ビット符号付き整数の文字列表記を追加します。
パブリック メソッドAppend(Int64)このインスタンスの最後に、指定した 64 ビット符号付き整数の文字列表記を追加します。
パブリック メソッドAppend(Object)指定したオブジェクトの文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(SByte)このインスタンスの最後に、指定した 8 ビット符号付き整数の文字列表記を追加します。
パブリック メソッドAppend(Single)指定した単精度浮動小数点数の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(String)指定した文字列のコピーをこのインスタンスの末尾に追加します。
パブリック メソッドAppend(UInt16)このインスタンスの最後に、指定した 16 ビット符号なし整数の文字列表記を追加します。
パブリック メソッドAppend(UInt32)このインスタンスの最後に、指定した 32 ビット符号なし整数の文字列表記を追加します。
パブリック メソッドAppend(UInt64)このインスタンスの最後に、指定した 64 ビット符号なし整数の文字列表記を追加します。
パブリック メソッドAppend(Char, Int32)指定した Unicode 文字の文字列形式のコピー数をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(Char[], Int32, Int32)Unicode 文字の指定した部分配列の文字列形式をこのインスタンスの末尾に追加します。
パブリック メソッドAppend(String, Int32, Int32)指定した部分文字列のコピーをこのインスタンスの末尾に追加します。
パブリック メソッドAppendFormat(String, Object[])0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。各書式指定項目は、パラメーター配列内の対応する引数の文字列形式に置換されます。
パブリック メソッドAppendFormat(IFormatProvider, String, Object[])0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。各書式指定項目は、指定された書式プロバイダーを使用して、パラメーター配列内の対応する引数の文字列形式に置換されます。
パブリック メソッドAppendLine()既定の行終端記号を現在の StringBuilder オブジェクトの末尾に追加します。
パブリック メソッドAppendLine(String)指定した文字列のコピーと既定の行終端記号を、現在の StringBuilder オブジェクトの末尾に追加します。
パブリック メソッドClear現在の StringBuilder インスタンスからすべての文字を削除します。
パブリック メソッドCopyToこのインスタンスの指定したセグメントにある文字を、特定の Char 配列の指定したセグメントにコピーします。
パブリック メソッドEnsureCapacityこのインスタンスの StringBuilder の容量が、指定した値以上になるようにします。
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッドEquals(StringBuilder)指定されたオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドInsert(Int32, Boolean)Boolean 値の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Byte)指定した 8 ビット符号なし整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Char)指定した Unicode 文字の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Char[])指定した Unicode 文字の配列の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Decimal)10 進数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Double)倍精度浮動小数点数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Int16)指定した 16 ビット符号付き整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Int32)指定した 32 ビット符号付き整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Int64)64 ビット符号付き整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Object)オブジェクトの文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, SByte)指定した 8 ビット符号付き整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Single)単精度浮動小数点数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, String)文字列をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, UInt16)16 ビット符号なし整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, UInt32)32 ビット符号なし整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, UInt64)64 ビット符号なし整数の文字列形式をこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, String, Int32)指定した文字列の 1 つ以上のコピーをこのインスタンスの指定した文字位置に挿入します。
パブリック メソッドInsert(Int32, Char[], Int32, Int32)Unicode 文字の指定した部分配列の文字列形式をこのインスタンスの指定した文字位置に挿入します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドRemoveこのインスタンスから、指定した範囲の文字を削除します。
パブリック メソッドReplace(Char, Char)このインスタンスに出現する指定文字をすべて、指定した別の文字に置換します。
パブリック メソッドReplace(String, String)このインスタンスに出現する指定文字列をすべて、指定した別の文字列に置換します。
パブリック メソッドReplace(Char, Char, Int32, Int32)このインスタンスの部分文字列に出現する指定文字をすべて、指定した別の文字に置換します。
パブリック メソッドReplace(String, String, Int32, Int32)このインスタンスの部分文字列に出現する指定文字列をすべて、指定した別の文字列に置換します。
パブリック メソッドToString()このインスタンスの値を String に変換します。 (Object.ToString() をオーバーライドします。)
パブリック メソッドToString(Int32, Int32)このインスタンスの部分文字列の値を String に変換します。
このページのトップへ

このクラスは、可変型の文字のシーケンスである値を持つ、文字列のようなオブジェクトを表します。文字を追加、削除、置換または挿入して値を作成した後にその値を変更できるため、値が可変型と呼ばれます。比較のため、String クラスのトピックを参照してください。

このクラスのインスタンスを変更するメソッドの多くは、同じインスタンスへの参照を返します。インスタンスへの参照が返されるため、参照に対してメソッドまたはプロパティを呼び出すことができます。これは、連続した操作を次々にチェイン化する単一のステートメントを書く場合に役立ちます。

StringBuilder の容量は、インスタンスが指定した時間に格納できる最大文字数で、インスタンスの値の文字列形式の長さ以上です。容量は、Capacity プロパティまたは EnsureCapacity メソッドを使用して増減できます。ただし、Length プロパティの値より小さくすることはできません。

StringBuilder のインスタンスが初期化されるときに、容量または最大容量が指定されなかった場合は、実装に固有の既定の容量が使用されます。

パフォーマンスに関する注意事項

String.Concat メソッドと AppendFormat メソッドは、どちらも新しいデータを既存の String オブジェクトまたは StringBuilder オブジェクトに連結します。String オブジェクトの連結演算は、常に既存の文字列と新しいデータから新しいオブジェクトを作成します。一方、StringBuilder オブジェクトは、新しいデータの連結に使用するためのバッファーを保持します。バッファーに十分な容量がある場合は、新しいデータがバッファーの末尾に追加されます。容量が足りない場合は、より大きなバッファーが新しく割り当てられ、元のバッファーから新しいバッファーにデータがコピーされたうえで、新しいデータが新しいバッファーに追加されます。

String または StringBuilder オブジェクトの連結演算のパフォーマンスは、メモリの割り当て頻度に依存しています。String の連結演算では、常にメモリが割り当てられます。一方、StringBuilder の連結演算では、StringBuilder オブジェクトのバッファーに新しいデータのための十分な容量がない場合にのみ、メモリが割り当てられます。したがって、連結する String オブジェクトの数が決まっている場合は、String クラスを使用した方が効率的です。この場合、個々の連結演算は、コンパイラによって 1 つの演算に結合されます。これに対し、ランダムな数の文字列をユーザーから入力として受け取り、ループ処理で連結する場合など、連結する文字列の数が不定である場合は、StringBuilder オブジェクトが適しています。

バージョンについてのメモ

Windows Phone

 StringBuilder オブジェクトでは、オブジェクトに文字が追加されるため、必要に応じて追加のメモリを割り当てることができます。割り当てられたメモリの量が実装固有です。必要なメモリ量が使用できない場合は OutOfMemoryException がスローされます。StringBuilder の代替が必要である場合は、MemoryStream を開き、StringBuilder クラスを使用せずにメモリ ストリームに文字列を書き込みます。

実装時の注意

この実装の既定容量は 16 で、既定の最大容量は Int32.MaxValue です。

StringBuilder は、インスタンスの値が大きくなった場合に、文字を格納するために必要なより多くのメモリを割り当てることができます。それに応じて容量が調整されます。割り当てられたメモリの量が実装固有で、必要なメモリ量が最大容量より大きい場合は、ArgumentOutOfRangeException がスローされます。

たとえば、Append メソッド、AppendFormat メソッド、EnsureCapacity メソッド、Insert メソッド、および Replace メソッドはインスタンスの値を拡大できます。

StringBuilder の値内の個別の文字は、Chars プロパティを使用してアクセスできます。インデックスの位置は 0 から始まります。

次のコード例は、StringBuilder クラスで定義された多くのメソッドを呼び出す方法を示しています。


using System;
using System.Text;

public sealed class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Create a StringBuilder that expects to hold 50 characters.
      // Initialize the StringBuilder with "ABC".
      StringBuilder sb = new StringBuilder("ABC", 50);

      // Append three characters (D, E, and F) to the end of the StringBuilder.
      sb.Append(new char[] { 'D', 'E', 'F' });

      // Exampleend a format string to the end of the StringBuilder.
      sb.AppendFormat("GHI{0}{1}", 'J', 'k');

      // Display the number of characters in the StringBuilder and its string.
      outputBlock.Text += String.Format("{0} chars: {1}", sb.Length, sb.ToString()) + "\n";

      // Insert a string at the beginning of the StringBuilder.
      sb.Insert(0, "Alphabet: ");

      // Replace all lowercase k's with uppercase K's.
      sb.Replace('k', 'K');

      // Display the number of characters in the StringBuilder and its string.
      outputBlock.Text += String.Format("{0} chars: {1}", sb.Length, sb.ToString()) + "\n";
   }
}

// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk
// 21 chars: Alphabet: ABCDEFGHIJK


Windows Phone OS

サポート: 8.0, 7.1, 7.0

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

表示:
© 2015 Microsoft