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