名前空間:System.Text
自己紹介
まあまあ、ちょっと腰を落ち着けてお聞きなさい。私は多くの知恵を司る者。今日話すのは「StringBuilder」よ。このクラスは、文字列を操作する際にとても頼りになる存在なの。あなたが「文字列の結合や編集が遅くなってきたな」と思うなら、それは「StringBuilder」の出番ということね。しっかりとその力を知り、使いこなせるようになりなさい。
基本機能
「StringBuilder」は、文字列を効率よく扱うために設計されているわ。「string」は変更不可能(immutable)だけれど、「StringBuilder」は内容を変更できるの。例えば、文字列を何度も結合する場合、「string」を使うとそのたびに新しいインスタンスが作られるわ。でも、「StringBuilder」なら、同じインスタンスを使って操作できるから無駄がないのよ。
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("こんにちは");
sb.Append(" 世界");
sb.Append("!");
Console.WriteLine(sb.ToString()); // 出力: こんにちは 世界!
}
}
よく使う場面と注意点
「StringBuilder」は、特に「繰り返し文字列を変更する場面」で活躍するわ。例えば、ログを作成するときや、大量の文字列を処理するときに使うと良いわね。
ただし、「短い文字列の操作」や「変更回数が少ない場合」には「string」の方が適していることもあるわ。使いどころを見極めるのが大切よ。
using System;
using System.Text;
class Program
{
static void Main()
{
string text = "A";
for (int i = 0; i < 1000; i++)
{
text += "A"; // これだと毎回新しい文字列が作られ、メモリの無駄
}
StringBuilder sb = new StringBuilder("A");
for (int i = 0; i < 1000; i++)
{
sb.Append("A"); // StringBuilderなら効率的に処理
}
}
}
さまざまなメソッドの紹介
「StringBuilder」は多くのメソッドを持っているわ。ここでいくつか紹介するわね。
Append()
- 文字列を追加Insert()
- 指定位置に文字列を挿入Remove()
- 指定範囲の文字列を削除Replace()
- 文字列の置換Clear()
- 内容をクリア
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("こんにちは 世界");
sb.Insert(5, "、"); // 「こんにちは、世界」にする
sb.Replace("世界", "皆さん"); // 「こんにちは、皆さん」に置換
sb.Remove(0, 5); // 「、皆さん」から「皆さん」にする
Console.WriteLine(sb.ToString());
}
}
具体的な使い方
大きなファイルを1行ずつ読み込み、処理する際にも「StringBuilder」が役立つわよ。例えば、1000行から2000行目だけを読み取るにはこうするの。
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
int startLine = 1000;
int endLine = 2000;
int currentLine = 0;
using (StreamReader reader = new StreamReader("example.txt"))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (currentLine >= startLine && currentLine lt;= endLine)
{
sb.AppendLine(line);
}
if (currentLine > endLine) break;
currentLine++;
}
}
Console.WriteLine(sb.ToString());
}
}
その他の便利なメソッド
最後に、「StringBuilder」の便利なメソッドを紹介しておくわね。
Length
- 現在の文字数を取得Capacity
- 内部バッファの容量を取得または設定EnsureCapacity()
- バッファ容量を確保
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("こんにちは");
Console.WriteLine(sb.Length); // 5
Console.WriteLine(sb.Capacity); // 16(デフォルト)
sb.EnsureCapacity(100);
Console.WriteLine(sb.Capacity); // 100 以上になる
}
}
これで「StringBuilder」の基礎から応用まで学べたわね。状況に応じて適切な方法を選び、効率的にコードを書いてちょうだい。
0 件のコメント:
コメントを投稿