No.3ベストアンサー
- 回答日時:
#2のかたの回答でよいかと思いますが、一点、気になり投稿しました。
それは、「入力された値が数字(0~9)かそうじゃないか判定」の意味が、
例えば以下のような値をOKとするかどうかです。
(1) +12345 ・・・先頭に+の符号付
(2) -12345 ・・・先頭に-の符号付
(3) 12345678901 ・・・11桁の数字
(1)、(2)は、int.TryParseを使用するとOK(数字)となります。
(3)は、int.TryParseを使用するとNG(数字以外)となります。
もし、上記の結果があなたの望んだ結果出れば、特に問題ありません。(以降は読み捨ててください)
しかしながら、数字(0~9)かどうかの観点で考えると、(1)(2)はNGであり、(3)はOKとなります。
もし、(1)(2)をNGとし(3)をOKとしたいなら、int.TryParseを使用してはいけません。
そもそも、int.TryParseは、文字列をint型の整数に変換できるか否かのチェックをおこなう機能です。
従って、+12345は、正の12345であり、-12345は負の12345の為、int型の数値に変換可能です。
12345678901は、11桁の数字の為、int型の整数に変換できません。
int型整数が格納できる数値の範囲は、-2147483648~+2147483647です。
従って、11桁の数字は格納できないため、TryParseでエラーとなります。
では、(1)(2)をNGとし(3)をOKとする為には、どうするかというと、
#1のかたのように正規表現を使用します。以下、正規表現を使用したコードです。
-------------------------------------
Regex reg = new Regex(@"^\d+$");
string str = "+12345";
bool ui = reg.IsMatch(str);
if (ui == true)
{
Console.WriteLine("<"+str+">OK");
}
else
{
Console.WriteLine("<"+str+">NG");
}
str = "12345678901";
ui = reg.IsMatch(str);
if (ui == true)
{
Console.WriteLine("<"+str+">OK");
}
else
{
Console.WriteLine("<"+str+">NG");
}
-------------------------------------
実行結果
<+12345>NG
<12345678901>OK
上記の正規表現は、文字列が数字(0~9)のみで構成され(+,-はNG)、
数字が1文字以上であれば、OKとなります。(何桁であってもOKです)
+、-のことは全く考えていませんでした。入力文字は8文字に制限しようとおもっていたので、桁オーバーの心配はないのですが、桁オーバーの事は全く意識していませんでした。
お教え頂きました方法は目からうろこです。大変勉強になります。感謝です。ありがとうございます。
No.2
- 回答日時:
TryParseに関して補足します。
こちら(↓)にも説明がありますが……
http://msdn.microsoft.com/ja-jp/library/f02979c7 …
TryParseの戻り値をチェックすることで、整数判定を行うことができます。
出力用の変数は必要ですが、Try~Catchを使わなくて済むのでコードが見やすくなることがあります。
int result = -1;
string input;
input = "12345";
if(int.TryParse(input, out result)){
Console.WriteLine("'{0}' is a number", input);
}else{
Console.WriteLine("'{0}' is not a number", input);
}
Console.WriteLine("result = {0}", result);
input = "abcde";
if(int.TryParse(input, out result)){
Console.WriteLine("'{0}' is a number", input);
}else{
Console.WriteLine("'{0}' is not a number", input);
}
Console.WriteLine("result = {0}", result);
/*
* 実行結果:
* '12345' is a number
* result = 12345
* 'abcde' is not a number
* result = 0
*/
No.1
- 回答日時:
fflashingさん
こんにちは。
私はVB.NETは知っていますが、C#は詳しくは知りません。
しかし基本大差はないので、一応回答させて頂きます。
※C#の構文を知らないので間違っていたら訂正して下さい。
1.通常、文字のチェックは正規表現で行った方が良いと思います。
例)VB.NET
Dim num As String = "100.9"
If System.Text.RegularExpressions.Regex.IsMatch(num, "^\d+$") Then
MsgBox("数字です。")
Else
MsgBox("数字以外が入っています。")
End If
例)C#
string number = "123456";
if (System.Text.RegularExpressions.Regex.IsMatch(num , @"^\d+$"))
{
Console.WriteLine("数字です。");
}
else
{
Console.Write("1/{0} = {1}", x, x_inv);
}
2.TryParseで行う?
試しましたが数字チェックは無理なようです。
数字エラーの場合結果をいつも0になるだけのようです。
※VB.NETで試した結果ですが…
3.Parse命令でTry&Catchで行う
例)VB.NET
Dim num As String = "100.9"
Dim i As Integer
Try
i = Int32.Parse(num)
MsgBox("数字です。")
Catch
MsgBox("数字以外が入っています。")
End Try
例)C#
string num = "this is not a number";
int i;
try {
i = Int32.Parse(num);
Console.WriteLine("数字です。");
} catch {
Console.WriteLine("数字以外が入っています。");
}
正規表現でのチェック。思いつきませんでした。テキストエディタで正規表現はよく使うのですが、.NETプログラムで使ったことがありませんでした。勉強になります。正規表現が使えれば文字のチェックも柔軟にできるので今後私の助けになってくれると思います。ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
visualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。
Microsoft ASP
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
-
4
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
5
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
6
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
-
7
c# 文字列の最後から1文字削除したい
C言語・C++・C#
-
8
TextBoxに半角数字以外を入れたらエラーメッセージを出す
JavaScript
-
9
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
10
VC#でテキストボックスに変数の値を表示する方法
その他(プログラミング・Web制作)
-
11
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
12
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
13
CloseとDisposeの違い
Visual Basic(VBA)
-
14
C#のループでtextboxに値を入れる方法
C言語・C++・C#
-
15
c#でTextBoxの入力制限
C言語・C++・C#
-
16
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
17
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
18
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
19
テキストボックスを空白にする方法
Visual Basic(VBA)
-
20
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
JAVAのfor文で困っています。
-
コマンドライン引数の例外処理...
-
配列を逆順させて表示させる方...
-
for文&if文を使った問題につい...
-
countに実行した回数をいれたい...
-
Java、2の0乗~10乗の表示
-
Java 入力した整数値の合計を、...
-
java キーボード入力された値の...
-
ORA-01858: 数値を指定する箇所...
-
javaで質問です。 文字列2023/2...
-
VBAで配列の計算
-
JAVAでの占い
-
1~100までの数字を表示し、か...
-
C言語のポインターに関する警告
-
パソコンキーボードで時分秒を...
-
IF関数でEmpty値を設定する方法。
-
実数からの小数部の取得
-
hiddenの値が期待した値で取得...
-
JSPやサーブレットでSystem.out...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
7つ数字を表示したら改行すると...
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaです。 途中まで出来ている...
-
Ctrl+Zが入力されると終了する...
-
Java 入力した整数値の合計を、...
-
テキストボックスに入力された...
-
数値⇒漢数字変換 java
-
Randomメソッドの確率設定
-
JAVAのfor文で困っています。
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
Java、2の0乗~10乗の表示
-
コマンドライン引数の例外処理...
-
階乗の式
-
エラー(互換性の無い型)
-
java 拡張for map
-
3つの値の中間値を求める
おすすめ情報