導入
文字列は「作る」だけでなく「加工する」場面が実務の大半です。大文字化・一部の取り出し・置換・分割など、stringが最初から持っている操作メソッドを使いこなせると、テキスト処理がぐっと楽になります。あわせて、ループで大量に連結するときに速いStringBuilderも紹介します。
図解
flowchart TB
S["" Hello, World ""] --> T["Trim() → 前後の空白を除去"]
S --> U["ToUpper() → 大文字化"]
S --> R["Replace(a, b) → 置換"]
S --> SP["Split(",") → 区切って配列に"]
S --> C["Contains(...) → 含むか判定"]
サンプル
string s = " Hello, World ";
Console.WriteLine(s.Trim()); // "Hello, World"(前後の空白を除去)
Console.WriteLine("hello".ToUpper()); // "HELLO"
Console.WriteLine("HELLO".ToLower()); // "hello"
Console.WriteLine("Hello".Substring(1, 3)); // "ell"(1文字目から3文字分)
Console.WriteLine("banana".Replace("a", "o")); // "bonono"(すべて置換)
Console.WriteLine("C# programming".Contains("gram")); // True(含むか)
Console.WriteLine("apple,banana,cherry".Split(',').Length); // 3(区切って配列にした要素数)
// ループで文字列を大量に連結するときは StringBuilder が速い
// (string は不変なので、+= を繰り返すと毎回コピーが発生して遅くなる)
var sb = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
sb.Append(i);
sb.Append("-");
}
Console.WriteLine(sb.ToString()); // 1-2-3-
Trim(前後空白除去)・ToUpper/ToLower(大小文字)・Substring(一部取り出し)・Replace(置換)・Contains(含むか)・Split(分割)が定番- 文字列は不変なので、これらは元を変えず新しい文字列を返す(
s.Trim()してもs自身は変わらない) - ループでの大量連結は
StringBuilderにAppendしていき、最後にToString()する(System.Textのクラス)
演習
string raw = " てすと ";
// TODO: raw の前後の空白を取り除いた文字列を出力してください("てすと" になる)
___
- 期待される出力:
てすと
ヒント1を見る
前後の空白は.Trim()で取り除けます
ヒント2を見る
Console.WriteLine(raw.Trim());
まとめ
stringはTrim/ToUpper/Substring/Replace/Contains/Splitなど豊富な操作メソッドを持つ- 文字列は不変なので、操作は必ず新しい文字列を返す(元は変わらない)
- ループでの大量連結は
StringBuilderで速く書ける
次回: @や"""などの文字列リテラルと、桁揃え・小数桁の「書式指定」です。