「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 の役割の違い」を意識しながら学習を進めてみてください。


訪問数 7 回, 今日の訪問数 8回

C#

Posted by hidepon