名前空間 System
自己紹介
私は空を駆ける雷の化身だ!今日は「String」クラスという非常に重要なツールについて語ろう
「String」クラスは、文字列を扱うためのクラスであり、C#では文字列はイミュータブル(変更不可)だ。この特徴により、安全かつ効率的な文字列操作が可能となる。
「String」は型のように見えるが、実際にはクラスだ。新しい文字列を生成するたびにインスタンスが作られる。この仕組みを覚えておけ!
基本機能
「String」クラスの基本機能を見てみよう。文字列の結合や部分文字列の取り出しなど、簡単な操作が可能だ。
// Stringクラスの基本的な使い方
using System;
class Program
{
static void Main()
{
string firstName = "太郎";
string lastName = "山田";
// 文字列の結合
string fullName = firstName + " " + lastName;
Console.WriteLine($"名前: {fullName}");
// 部分文字列の取得
string firstChar = fullName.Substring(0, 1); // 最初の文字
Console.WriteLine($"最初の文字: {firstChar}");
}
}
上の例では、「+」演算子を使った結合と、`Substring`メソッドで部分文字列を取り出している。
使う場面の注意点
「String」クラスの使い方で注意が必要なのは、文字列がイミュータブルである点だ。繰り返し結合を行う場合、メモリ効率が低下する可能性がある。以下の例を見てみよう。
using System;
using System.Diagnostics;
using System.Text;
class Program
{
static void Main()
{
int iterations = 10000;
// Stringクラスでの文字列結合
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
string str = string.Empty;
for (int i = 0; i < iterations; i++)
{
str += "a";
}
stopwatch.Stop();
Console.WriteLine($"String: Time elapsed: {stopwatch.ElapsedMilliseconds} ms");
// StringBuilderクラスでの文字列結合
stopwatch.Reset();
stopwatch.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < iterations; i++)
{
sb.Append("a");
}
stopwatch.Stop();
Console.WriteLine($"StringBuilder: Time elapsed: {stopwatch.ElapsedMilliseconds} ms");
}
}
頻繁に文字列を変更する場合は、StringBuilderを使うべきだ。
文字列操作に役立つさまざまなメソッド
「String」クラスには多くの便利なメソッドがある。ここでは、代表的なものをいくつか紹介する。
// 文字列操作の便利なメソッド
using System;
class Program
{
static void Main()
{
string text = " Hello C#.NET World ";
// トリム
string trimmed = text.Trim();
Console.WriteLine($"トリム後: '{trimmed}'");
// 大文字化
string upper = trimmed.ToUpper();
Console.WriteLine($"大文字化: {upper}");
// 小文字化
string lower = trimmed.ToLower();
Console.WriteLine($"小文字化: {lower}");
// 分割
string[] words = trimmed.Split(' ');
Console.WriteLine("分割結果:");
foreach (string word in words)
{
Console.WriteLine(word);
}
// 置換
string replaced = trimmed.Replace("C#", "Java");
Console.WriteLine($"置換結果: {replaced}");
}
}
これらのメソッドは、文字列の整形やフォーマットに非常に役立つ。
具体的な使い方
実用的な例として、CSVデータのパースと整形を行うコードを見てみよう。
// CSVデータのパース例
using System;
class Program
{
static void Main()
{
string csvData = "名前,年齢,職業\n太郎,30,エンジニア\n花子,28,デザイナー";
// 行ごとに分割
string[] rows = csvData.Split('\n');
foreach (string row in rows)
{
// 列ごとに分割
string[] columns = row.Split(',');
Console.WriteLine($"名前: {columns[0]}, 年齢: {columns[1]}, 職業: {columns[2]}");
}
}
}
このコードは、CSV形式のデータを分割し、それぞれの値を取り出している。
それ以外の便利なメソッド
ここでは、10個以上の便利なメソッドを列挙して紹介する。
// 便利なメソッド一覧
using System;
class Program
{
static void Main()
{
string sample = "ExampleString";
Console.WriteLine($"長さ: {sample.Length}"); // 長さ
Console.WriteLine($"空か: {string.IsNullOrEmpty(sample)}"); // 空チェック
Console.WriteLine($"部分一致: {sample.StartsWith("Ex")}"); // 前方一致
Console.WriteLine($"部分一致: {sample.EndsWith("ing")}"); // 後方一致
Console.WriteLine($"インデックス: {sample.IndexOf("Str")}"); // 部分文字列のインデックス
Console.WriteLine($"挿入: {sample.Insert(7, "Modified")}"); // 挿入
Console.WriteLine($"削除: {sample.Remove(7, 3)}"); // 削除
Console.WriteLine($"サブストリング: {sample.Substring(7)}"); // サブストリング
Console.WriteLine($"比較: {sample.CompareTo("ExampleString")}"); // 比較
Console.WriteLine($"フォーマット: {string.Format("値は{0}です", 42)}"); // フォーマット
}
}
これらのメソッドを駆使すれば、文字列操作の幅が広がること間違いなしだ。
0 件のコメント:
コメントを投稿