Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
入力チェック
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30245#CommentId82819
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2017/6/8 10:11:07
ちょっと気になったので、masaX さんのコードについて追加検証してみました。
コントロールパネルの地域設定に依存する部分もありますが:
(a)「1234」 が 1234 に解釈され、4文字扱いになる。(全角文字)
(b)「+5555」 が 5555 に解釈され、4文字扱いになる。(正の符号の先導)
(c)「-987」 が -987 に解釈され、4文字扱いになる。(負の符号の先導)
(d)「(275)」 が -275 に解釈され、4文字扱いになる。(丸括弧による負数表記)
(e)「9753.10」 が 9753 に解釈され、4文字扱いになる。(小数表記)
(f)「1.3579E3」 が 1358 に解釈され、4文字扱いになる。(正数となる指数表記)
(g)「-333333E-3」が -333 に解釈され、4文字扱いになる。(負数となる指数表記)
(h)「&H9A4」 が 2468 に解釈され、4文字扱いになる。(16進数表記)
(i)「&o1750」 が 1000 に解釈され、4文字扱いになる。(8進数表記)
(j)「1,2,34,.56」が 1235 に解釈され、4文字扱いになる。(桁区切り記号)
(k)「\1,234」 が 1234 に解釈され、4文字扱いになる。(通貨記号)
(l)「 5432 」 が 5432 に解釈され、4文字扱いになる。(先導空白あるいは後続空白)
(m)「&H80000000」が 2147483648 に解釈され、CInt 時に OverflowException の例外が発生する。
(n)「-∞」 が Double.NegativeInfinity に解釈され、CInt 時に OverflowException の例外が発生する。
ここまでにあった回答以外の手段として、他にも
・正規表現を使った判定方法
・Like 演算子を使った判定方法
・Integer.TryParse を使った上で変換後の値の大小を調べる方法
・MaskedTextBox コントロールを使った入力検査
など、いろいろな方法が考えられます。
処理タイミングについても、キー入力時(KeyPress 等)、テキスト変更時(TextChanged 等)、
入力検証時(Validating 等)、ボタンクリック時(Click 等)と様々ですし、時には、
これらを組み合わせてチェックすることもあります。
「4 桁の数値を得られれば、入力文字列の形式にはこだわらない」のか、
「4 桁の数字(≠数値)で構成された文字列であることを期待する」のか、
最終的に求める処理にあわせて使い分けてみてください。