カテゴリ: C# 更新日: 2025/10/26

C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本

C#で文字列が数値か判定する方法(char.IsDigitなど)
C#で文字列が数値か判定する方法(char.IsDigitなど)

先生と生徒の会話形式で理解しよう

生徒

「先生、C#で文字列が数字かどうかを調べる方法ってありますか?」

先生

「もちろんありますよ。C#では、char.IsDigitint.TryParseなどを使って簡単に判定できます。」

生徒

「なるほど。でも、char.IsDigitってどんな動きをするんですか?」

先生

「それでは、文字列が数値かどうかを調べる方法を、初心者の方にもわかりやすく順番に説明していきましょう!」

1. C#で文字列が数値かを判定するとは?

1. C#で文字列が数値かを判定するとは?
1. C#で文字列が数値かを判定するとは?

C#で「文字列が数値かどうかを判定する」とは、文字列に数字以外の文字が含まれていないかを調べる処理のことです。たとえば「123」は数字の文字列ですが、「12a3」は途中にアルファベットが混じっているので数値とはいえません。

このような判定を行うことで、ユーザーが入力した値が正しいかを確認したり、計算に使えるかどうかを判断することができます。

2. char.IsDigitメソッドを使って1文字ずつ判定する

2. char.IsDigitメソッドを使って1文字ずつ判定する
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を使って数値として変換できるか調べる

3. int.TryParseを使って数値として変換できるか調べる
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との違いを知っておこう

4. char.IsNumberとの違いを知っておこう
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. 実践:ユーザー入力が数値かどうかをチェックする

5. 実践:ユーザー入力が数値かどうかをチェックする
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. まとめ:用途に応じて使い分けよう

6. まとめ:用途に応じて使い分けよう
6. まとめ:用途に応じて使い分けよう

文字列が数字だけかを調べたい場合はchar.IsDigit、実際に数値として変換できるかを判定したい場合はTryParseを使うのが一般的です。

どちらの方法も、C#での文字列処理の基礎として非常に重要なテクニックです。文字列操作の練習を重ねることで、より正確で安全なプログラムを作れるようになります。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法