.NET TIPS

IsDigitメソッド/IsNumberメソッドの違いとは?

デジタルアドバンテージ 一色 政彦
2005/02/18

 .NET Frameworkのクラス・ライブラリには、特定の文字(.NETでは文字はすべてUnicode文字として処理される)が「数字」かどうかをチェックするためのメソッドが2つ用意されている。具体的にはIsDigitメソッドとIsNumberメソッドだが(いずれもSystem名前空間のChar構造体の静的メソッド)、それではこの2つのメソッドはどう使い分ければよいのだろうか。本稿ではその使い分け基準を知るために、これらのメソッドの違いをまとめる(なお、以下の解説ではローマ数字などの機種依存文字を使用しているため、Windows以外の環境ではそれらの文字は文字化けする可能性がある)。

 なお、ここでいう「数字」とは幅広い意味で「数を表す文字」を指しており、例えば1、2といった10進数の数字だけでなく、@、Aといった文字数字などもこれに含まれる。

 まず、それぞれのメソッドは次のようにして利用する(C#の場合の例)。これらのメソッドのパラメータに指定した文字が数字ならばTrueをその戻り値として返し、そうでなければFalseを返す。

bool bDigit  = Char.IsDigit(']');   // Falseが返却される
bool bNumber = Char.IsNumber(']');  // Trueが返却される

 この例を見れば分かるように、メソッドにより数字として有効になる(つまり戻り値がTrueになる)文字が違うわけである。そこでその「有効な文字」の違いを次の表にまとめた。

メソッド Unicodeカテゴリ 有効な文字
IsDigitメソッド DecimalDigitNumber 「0」〜「9」(=半角)、「0」〜「9」(=全角)の10進数の数字
IsNumberメソッド DecimalDigitNumber 同上(「0」〜「9」、「0」〜「9」の10進数の数字)
LetterNumber 「T」〜「]」、「@」〜「I」、「〇」などの文字数字
OtherNumber 「@」〜「S」などの10進数の数字でも文字数字でもない数値
IsDigitメソッドとIsNumberメソッドにおける「有効な文字」の違い
「Unicodeカテゴリ」とはUnicode文字が属するグループである。すべての数字はUnicodeカテゴリにより分類されており、これら2つのメソッドが文字を数字として判断する基準は、その文字が属しているカテゴリに基づく。クラス・ライブラリでは、UnicodeカテゴリはUnicodeCategory列挙体で定義されている。また文字が属するUnicodeカテゴリはChar.GetUnicodeCategoryメソッドにより取得できる。

 上の表を見れば分かるように、IsDigitメソッドよりも、IsNumberメソッドの方が広範な数字に対して有効となる。ただし、IsNumberメソッドでも漢数字の「一」や「壱」などは、数字と見なさない仕様のようである。注意してほしい。End of Article

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Char構造体(System名前空間)
 
この記事と関連性の高い別の.NET TIPS
文字と文字列を変換するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間