C#でTryParseメソッドを使って文字列が数値かどうかを確認する

投稿日:

C#に限らず、コーディングしていると数値が欲しいのに、引数がstring型とかいう状況がよくあるわけで。

判定方法はいろいろあるけど、TryParseを使うと簡単だった。

TryParseって何するの?

方法: 文字列が数値を表しているかどうかを確認する (C# プログラミング ガイド)

MicrosoftのC#プログラミングガイドによると、

文字列が数値以外の文字、または指定した型で表すには大きすぎる (または小さすぎる) 数値の場合、TryParse は false を返し、out パラメーターを 0 に設定します。 それ以外の場合は true を返し、out パラメーターを文字列の数値に設定します。

例えば、「100」という文字列がint型なのかを判定し、int型であればパラメータに「100」をint型として返します。
int型でなければ、パラメータには「0」が設定される。

紹介されている例だと、

  • result = true
  • i = 108

となります。


int i = 0;

string s = "108";

bool result = int.TryParse(s, out i); //i now = 108

力技で判定すると

int i = 0;

string s = "108";

for(int keta = 1; keta < 4; keta++)
{
    for(int moji = 0; moji < 10; moji++)
    {
        if(s.Substring(keta,1).ToString() == moji.ToString())
        {
            Console.WriteLine("文字");
        }
    }
}

Console.WriteLine("数値");

多分、こんな感じで1桁ずつ0~9のどれかに当てはまるかを判定するとか。

コレに比べたら、1行で判定と数値に変換した値を返してくれるTryParseはいい。

他の方法

「(int)」を先頭につけてキャストしてしまう方法もあるけど、数値以外が入った瞬間に破綻するコードになるので、絶対に数値しか入力されないっていう縛りがなければ使えない。

 

 

 







-C#
-

関連記事

[C#]文字を繰り返したものを取得したい。

いちいちfor文とかで繰り返すのも効率が悪いなと思ってたので、処理を関数化・・・ ただ、共通関数として登録しないので、別のところで使いたい場合は、同じ関数が複数登録されちゃうことに・・・ 更には、思い …

[C#]リストをカンマ区切りの文字列で出力する

リストの項目をカンマ区切りで出力したい 卵が先か鶏が先か~って話じゃないんですが、リストで出力した内容をカンマ区切りのデータにする必要が出てきたので、調べました。 List<string> …

DLLのプロパティのブロック解除をして、ダウンロードしたプログラムを起動出来るようにする。ダウンロードしたプログラムが実行できない時の対処法。

よくありますよね・・・ 予期せぬエラーってなんだよ(`・∀・´) 特にお客さんの目の前で「デンッ!!」っていうエラー音と共に表示された時の微妙な空気感がたまりません (╹◡╹) (^ω^) :(;゙゚ …

C#で計算時の切り上げ・切捨て・四捨五入を行う方法

普段使わないと馴染みが薄いですが、日常で行う計算にも切り上げ・切捨て・四捨五入は割りと使われていたりします。 今回はそんな計算のお話。 例えば、クルマ購入時の端数の切捨てとかね。 「千円の位を負けてく …

ORACLEでTO_CHARを使用し、カンマ区切りデータを出力する

帳票出力を行うPGで困った。 数値形式のデータのため、カンマ区切りで表示したいんだけど、テンプレートの制約のせいで上手く行かなくて時の解決方法。 帳票のテンプレートとなるファイルのセルは文字列形式。 …


カテゴリー