.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
文字と文字列を変換するには?
文字列をURLエンコードするには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH