この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 |
訳文
原文
|
StringBuilder クラス
可変型の文字列を表します。 このクラスは継承できません。
アセンブリ: mscorlib (mscorlib.dll 内)
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) | 指定した 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(String, Object()) | 0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。 各書式指定項目は、パラメーター配列内の対応する引数の文字列形式に置換されます。 |
|
AppendFormat(IFormatProvider, String, Object()) | 0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。 各書式指定項目は、指定された書式プロバイダーを使用して、パラメーター配列内の対応する引数の文字列形式に置換されます。 |
|
AppendFormat(String, Object, Object) | 0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。 各書式指定項目は、2 つの引数のどちらかの文字列形式に置換されます。 |
|
AppendFormat(String, Object, Object, Object) | 0 個以上の書式指定項目を含む複合書式指定文字列を処理し、結果として返された文字列をこのインスタンスに追加します。 各書式指定項目は、3 つの引数のいずれかの文字列形式に置換されます。 |
|
AppendLine | 既定の行終端記号を現在の StringBuilder オブジェクトの末尾に追加します。 |
|
AppendLine(String) | 指定した文字列のコピーと既定の行終端記号を、現在の StringBuilder オブジェクトの末尾に追加します。 |
|
Clear | 現在の StringBuilder インスタンスからすべての文字を削除します。 |
|
CopyTo | このインスタンスの指定したセグメントにある文字を、特定の Char 配列の指定したセグメントにコピーします。 |
|
EnsureCapacity | このインスタンスの StringBuilder の容量が、指定した値以上になるようにします。 |
|
Equals(Object) | 指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。) |
|
Equals(StringBuilder) | 対象のインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。 |
|
Finalize | オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (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 に変換します。 |
| 名前 | 説明 | |
|---|---|---|
|
ISerializable.GetObjectData | インフラストラクチャ。 System.Runtime.Serialization.SerializationInfo オブジェクトに、現在の StringBuilder オブジェクトを逆シリアル化するために必要なデータを代入します。 |
このクラスは、可変型の文字のシーケンスである値を持つ、文字列のようなオブジェクトを表します。 文字を追加、削除、置換または挿入して値を作成した後にその値を変更できるため、値が可変型と呼ばれます。 比較のため、String クラスのトピックを参照してください。
このクラスのインスタンスを変更するメソッドの多くは、同じインスタンスへの参照を返します。 インスタンスへの参照が返されるため、参照に対してメソッドまたはプロパティを呼び出すことができます。 これは、連続した操作を次々にチェイン化する単一のステートメントを書く場合に役立ちます。
StringBuilder の容量は、インスタンスが指定した時間に格納できる最大文字数で、インスタンスの値の文字列形式の長さ以上です。 容量は、Capacity プロパティまたは EnsureCapacity メソッドを使用して増減できます。ただし、Length プロパティの値より小さくすることはできません。
StringBuilder のインスタンスが初期化されるときに、容量または最大容量が指定されなかった場合は、実装に固有の既定の容量が使用されます。
パフォーマンスに関する考慮事項
Concat メソッドと AppendFormat メソッドは、どちらも新しいデータを既存の String オブジェクトまたは StringBuilder オブジェクトに連結します。 String オブジェクトの連結演算は、常に既存の文字列と新しいデータから新しいオブジェクトを作成します。 一方、StringBuilder オブジェクトは、新しいデータの連結に使用するためのバッファーを保持します。 バッファーに十分な容量がある場合は、新しいデータがバッファーの末尾に追加されます。容量が足りない場合は、より大きなバッファーが新しく割り当てられ、元のバッファーから新しいバッファーにデータがコピーされたうえで、新しいデータが新しいバッファーに追加されます。
String または StringBuilder オブジェクトの連結演算のパフォーマンスは、メモリの割り当て頻度に依存しています。 String の連結演算では、常にメモリが割り当てられます。一方、StringBuilder の連結演算では、StringBuilder オブジェクトのバッファーに新しいデータのための十分な容量がない場合にのみ、メモリが割り当てられます。 したがって、連結する String オブジェクトの数が決まっている場合は、String クラスを使用した方が効率的です。 この場合、個々の連結演算は、コンパイラによって 1 つの演算に結合されます。 これに対し、ランダムな数の文字列をユーザーから入力として受け取り、ループ処理で連結する場合など、連結する文字列の数が不定である場合は、StringBuilder オブジェクトが適しています。
実装時の注意
この実装の既定容量は 16 で、既定の最大容量は Int32.MaxValue です。
StringBuilder は、インスタンスの値が大きくなった場合に、文字を格納するために必要なより多くのメモリを割り当てることができます。それに応じて容量が調整されます。 割り当てられたメモリの量が実装固有で、必要なメモリ量が最大容量より大きい場合は、ArgumentOutOfRangeException または OutOfMemoryException がスローされます。
たとえば、Append メソッド、AppendFormat メソッド、EnsureCapacity メソッド、Insert メソッド、および Replace メソッドはインスタンスの値を拡大できます。
StringBuilder の値内の個別の文字は、Chars プロパティを使用してアクセスできます。 インデックスの位置は 0 から始まります。
StringBuilder クラスで定義された多くのメソッドを呼び出す方法を次の例に示します。
using System; using System.Text; public sealed class App { static void Main() { // 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' }); // Append 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. Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); // 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. Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); } } // This code produces the following output. // // 11 chars: ABCDEFGHIJk // 21 chars: Alphabet: ABCDEFGHIJK
Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2
.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
