1. string型をもっと詳しく見てみよう
string型はC#で一番よく使われる型のひとつ。いや、たぶん一番使うかも。めっちゃ便利な型で、テキストを変数に保存できるんだ。それに、intやdouble型と違って、string型のオブジェクトには色んな関数がついてて、いろんな面白いことができるよ。
あと、C#の全てのオブジェクト(ほんと全部!)はstring型に変換できる。もっと正確に言うと、C#の全てのオブジェクトは自分のテキスト(文字列)表現を返せるんだ。この型はめっちゃ便利で面白いから、また何度も戻ってくると思うけど、今日はその基本を紹介するね。
string型の変数を作る
string型は文字列(テキスト)を保存するための型。テキストを保存できる変数をコードで作るには、こう書くよ:
string namae;
ここでnamaeは変数名だよ。
例:
| コマンド | 説明 |
|---|---|
| string name; | 文字列変数nameを作る |
| string message; | 文字列変数messageを作る |
| string text; | 文字列変数textを作る |
intやdouble型と同じように、string型の変数を複数まとめて作る省略記法も使えるよ:
string namae1, namae2, namae3;
2. string型変数への値の代入
string型の変数に値を入れるには、こう書くよ:
namae = "atai";
ここで最初の違いが出てくる。string型の値は全部テキストの文字列で、ダブルクォーテーションで囲む必要があるんだ。
例:
| コマンド | メモ |
|---|---|
| string name = "アーニャ"; | 変数nameはテキストアーニャを持つ |
| string city = "New York"; | 変数cityはテキストNew Yorkを持つ |
| string message = "Hello!"; | 変数messageはテキストHello!を持つ |
3. string型変数の初期化
intやdouble型と同じように、string型の変数も作ると同時に初期化できる。ちなみに、C#の全ての型でこれができるから、もうこれ以上は説明しないね。
string namae1 = "moji1", namae2 = "moji2";
変数の作成と初期化の例
string name = "アーニャ", city = "New York", message = "Hello!";
値が入ってない変数は使えないよ
C#のコンパイラは、値を入れてない変数を宣言して使おうとすると怒るよ。
こんなコードは動かない:
string name;
Console.WriteLine(name); // 変数nameは初期化されてない。コンパイルできないよ。
int a;
a++; // 変数aは初期化されてない。コンパイルできないよ。
double x;
double y = x; // 変数xは初期化されてない。コンパイルできないよ。
4. 連結(文字列のくっつけ)
C#の文字列でできる面白くて簡単なことのひとつが、文字列同士をくっつけること。これを連結(concatenation)って呼ぶ。覚えやすくするために「コンカテナシオン」って言ってもいいかも。よく「文字列のくっつけ」や「文字列の足し算」って呼ばれることもあるよ。
2つの文字列をくっつけるには、+記号を使うだけ。超簡単:
"atai1" + "atai2"
例:
| コマンド | メモ |
|---|---|
| string name = "アーニャ" + "アーニャ"; | nameはアーニャアーニャになる |
| string city = "New York" + "アーニャ"; | cityはNew Yorkアーニャになる |
| string message = "Hello! " + "アーニャ"; | messageはHello! アーニャになる |
もちろん、たくさんの文字列を一気に足したり、文字列と変数を混ぜて足すこともできるよ。
例:
string name = "アーニャ"; // nameは"アーニャ"
string city = "New York"; // cityは"New York"
string message = "Hello!" + city + name + city; // messageは"Hello!New YorkアーニャNew York"
5. 空文字列
さっきの例だと、messageの中身が読みにくいよね。スペースが足りないから。スペースを入れたいときは、スペースをそのままコードに書いてダブルクォーテーションで囲めばOK。めっちゃ簡単:
" "
ちなみに、クォーテーションの間に何も書かない(ダブルクォーテーション2つだけ)と、「空文字列」になるよ:
""
一応存在はするけど、画面に出力しても何も表示されないし、他の文字列とくっつけても何も起きない。文字列の「ゼロ」みたいなものだね。
6. 文字列内の特殊文字のエスケープ
もう知ってると思うけど、文字列はダブルクォーテーションで囲むよね。でも、文字列の中にクォーテーションを入れたいときはどうする?そのまま書いたら、コンパイラが文字列の終わりだと勘違いしちゃうよね?
そう、その通り。だから、文字列の中のクォーテーションは\"って書く。コードはこんな感じ:
string quote = "彼は言った: \"こんにちは!\"";
Console.WriteLine(quote); // 彼は言った: "こんにちは!"
実はもうちょっとトリッキー。\は文字列の中で特別な(制御)文字として扱われる。このおかげで、改行やタブみたいな「印刷できない文字」を指定できるんだ。で、\自体を入れたいときは2回書く。
よく使う4つの組み合わせ:
| 書き方 | 意味 |
|---|---|
| \n | 改行(newline) |
| \t | タブ(インデント) |
| \\ | そのまま\ |
| \" | 文字列内のクォーテーション |
例:
string multiline = "ストロカ 1\nストロカ 2";
Console.WriteLine(multiline);
出力は:
// ストロカ 1
// ストロカ 2
7. 文字列補間($文字列)
C#はめっちゃモダンな言語だから、変数の値を文字列の中に簡単にキレイに入れられる補間機能がある。やり方は、クォーテーションの前に$をつけて、文字列の中で波カッコ{}を使うだけ。もう知ってるよね。
でも、波カッコの中には式や関数呼び出しも書けるって知ってた?例:
string name = "オリャ";
int birthYear = 1999;
string info = $"私の名前は{name}、{2025-birthYear}歳です。";
Console.WriteLine(info); // 私の名前はオリャ、26歳です。
このやり方だと、コードが読みやすくなるし、ミス(やカッコの数)も減る。補間についてはまた別のレクチャーで詳しくやるけど、簡単な場合はもうどんどん使ってOK!
8. 文字列のメソッド
string型には自分専用の関数(メソッド)がある。めっちゃたくさんあって、プログラマーの味方!今日はその中でも一番シンプルなやつを紹介するね。例:
| メソッド | 説明 | 例の結果 |
|---|---|---|
| str.Length | 文字列の長さ | "abc".Length → 3 |
| str.ToUpper() | 大文字に変換 | "abc".ToUpper() → "ABC" |
| str.ToLower() | 小文字に変換 | "ABC".ToLower() → "abc" |
| str.Trim() | 両端のスペースを消す | " x y ".Trim() → "x y" |
文字列メソッドの使い方例
全部こんな感じで呼び出す:変数.メソッド(...)
文字列の長さを調べる:
string name = "アンドレイ";
int length = name.Length;
Console.WriteLine(length); // 6、6文字だから
文字列を大文字・小文字に変換:
string original = "プリヴェット";
Console.WriteLine(original.ToUpper()); // プリヴェット
Console.WriteLine(original.ToLower()); // プリヴェット
両端のスペースを消す(キーボード入力の時に超便利):
string messy = " hello ";
Console.WriteLine(messy.Trim()); // "hello"
こういうメソッドは全部新しい文字列を返すよ。元の文字列は変わらないからね。
GO TO FULL VERSION