C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
生徒
「先生、C#で文字列が数字かどうかを調べる方法ってありますか?」
先生
「もちろんありますよ。C#では、char.IsDigitやint.TryParseなどを使って簡単に判定できます。」
生徒
「なるほど。でも、char.IsDigitってどんな動きをするんですか?」
先生
「それでは、文字列が数値かどうかを調べる方法を、初心者の方にもわかりやすく順番に説明していきましょう!」
1. C#で文字列が数値かを判定するとは?
C#で「文字列が数値かどうかを判定する」とは、文字列に数字以外の文字が含まれていないかを調べる処理のことです。たとえば「123」は数字の文字列ですが、「12a3」は途中にアルファベットが混じっているので数値とはいえません。
このような判定を行うことで、ユーザーが入力した値が正しいかを確認したり、計算に使えるかどうかを判断することができます。
2. char.IsDigitメソッドを使って1文字ずつ判定する
char.IsDigitメソッドは、C#で用意されている文字が数字(0~9)かどうかを判定するメソッドです。文字列全体をチェックしたい場合は、1文字ずつ調べる方法を使います。
string text = "12345";
bool isAllDigits = true;
foreach (char c in text)
{
if (!char.IsDigit(c))
{
isAllDigits = false;
break;
}
}
if (isAllDigits)
{
Console.WriteLine("文字列はすべて数字です。");
}
else
{
Console.WriteLine("文字列に数字以外の文字が含まれています。");
}
文字列はすべて数字です。
このように、char.IsDigitを使うと、数字だけで構成された文字列かどうかを確実に調べることができます。
ここでの「文字」とは、1文字だけのデータのことです。C#では、文字をchar型(キャラクタ型)と呼びます。
3. int.TryParseを使って数値として変換できるか調べる
char.IsDigitは1文字ずつ調べる方法ですが、もっと簡単に「文字列全体を数値に変換できるか」を判定する方法もあります。それがint.TryParseです。
TryParseは、「変換できたかどうか」を真偽値(true / false)で返してくれる便利なメソッドです。変換に成功した場合は、数値に変換された結果を変数に入れてくれます。
string text = "4567";
bool result = int.TryParse(text, out int number);
if (result)
{
Console.WriteLine("数値に変換できました。値は " + number + " です。");
}
else
{
Console.WriteLine("数値に変換できません。");
}
数値に変換できました。値は 4567 です。
int.TryParseは、入力が数字だけの場合にtrueを返します。たとえば、「123」は変換できますが、「12a」や「abc」は変換できず、falseになります。
また、数値が大きすぎる場合(例:9999999999999など)も、intの範囲を超えると変換に失敗します。そのような場合は、long.TryParseなど、より大きな型を使うと良いでしょう。
4. char.IsNumberとの違いを知っておこう
C#にはchar.IsNumberというメソッドもあります。IsDigitとの違いは、数字として認識される文字の範囲が広いことです。たとえば、ローマ数字や全角数字なども判定対象に含まれます。
通常の半角数字(0~9)だけを判定したい場合は、char.IsDigitを使うのが安心です。もし多言語対応のプログラムで全角数字も扱いたい場合は、IsNumberのほうが便利です。
char c1 = '3';
char c2 = '3'; // 全角の3
Console.WriteLine(char.IsDigit(c1)); // true
Console.WriteLine(char.IsDigit(c2)); // false
Console.WriteLine(char.IsNumber(c2)); // true
True
False
True
このように、C#の文字列判定は目的に応じてメソッドを使い分けることが大切です。
5. 実践:ユーザー入力が数値かどうかをチェックする
ここまでの知識を使って、ユーザーが入力した文字列が数値かどうかをチェックするサンプルを見てみましょう。コンソールから入力を受け取り、それが数字なら変換して表示、そうでなければエラーメッセージを出します。
Console.Write("数字を入力してください:");
string input = Console.ReadLine();
if (int.TryParse(input, out int value))
{
Console.WriteLine("入力された数値は " + value + " です。");
}
else
{
Console.WriteLine("入力が数値ではありません。もう一度入力してください。");
}
数字を入力してください:123
入力された数値は 123 です。
このように、TryParseを使えば、エラーを出さずに安全に数値チェックを行えます。初心者のうちは、TryParseを使う方法から覚えるのがおすすめです。
6. まとめ:用途に応じて使い分けよう
文字列が数字だけかを調べたい場合はchar.IsDigit、実際に数値として変換できるかを判定したい場合はTryParseを使うのが一般的です。
どちらの方法も、C#での文字列処理の基礎として非常に重要なテクニックです。文字列操作の練習を重ねることで、より正確で安全なプログラムを作れるようになります。