「string だけでいい?」と思ったときに読む話
文字列から1文字取り出して「数字かどうか」を判定する
プログラミングを学び始めると、こんな疑問が出てきます。
「char 型って必要ですか?
string があれば全部できるのでは?」
とても良い疑問です。
今回は 「文字列から1文字取り出して、それが数字かどうかを判断する」 というシンプルな例で、この疑問を整理してみましょう。
今回使うサンプルコード
string text = "5abc";
char c = text[0];
if (char.IsDigit(c))
{
Console.WriteLine("数字です");
}
else
{
Console.WriteLine("数字ではありません");
}
このコードは、
- 文字列 “5abc" から
- 先頭の1文字を取り出し
- それが数字かどうかを判定する
という処理をしています。
① string は「文字列(文章)」
まず、この行です。
string text = "5abc";
string は 文字が並んだもの(文字列) を扱う型です。
- “5abc" は
- 5
- a
- b
- c
という 複数の文字の集まり です。
② string[index] で「1文字」を取り出せる
次にこの行。
char c = text[0];
ここがとても重要です。
- text[0] は→ 0番目の文字(先頭の文字)を取り出す
- 結果は string ではなく char
つまり、
text[0] → '5'
になります。
👉string から1文字取り出した瞬間に、型は char になる
というのがポイントです。
③ char は「1文字専用の型」
char c = text[0];
char は 必ず1文字だけ を扱う型です。
- '5’
- 'A’
- 'あ’
など、「1文字」を表します。
④ なぜ char にする必要があるのか?
次の処理を見てみましょう。
char.IsDigit(c)
これは、
この1文字は「数字か?」
を判定する char 専用のメソッド です。
もし c が string だったら、この判定はできません。
⑤ if 文で結果を分ける
if (char.IsDigit(c))
{
Console.WriteLine("数字です");
}
else
{
Console.WriteLine("数字ではありません");
}
今回の例では、
- c は '5’
- '5’ は数字
なので、実行結果はこうなります。
数字です
「string だけでいい?」への答え
確かに、
string s = "5";
のように、1文字を string で持つことはできます。
でも、
- 1文字であることを保証したい
- その文字が数字か、英字かを調べたい
こういう場面では char が必要 になります。
まとめ(整理)
- string→ 文字の集まり(文章)
- char→ 1文字専用
- string[index] の結果→ char になる
- 1文字の性質を調べる→ char を使う
おわりに
「char は不要では?」という疑問が出るのは、
型を意味で理解しようとしている証拠 です。
とても良い視点なので、
ぜひ「string と char の役割の違い」を意識しながら学習を進めてみてください。




ディスカッション
コメント一覧
まだ、コメントがありません