0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[C#]バイト数と文字数の比較で、漢字とひらがなの入力を制限する 英数字のみ

Last updated at Posted at 2022-01-26

##やりたいこと
画面上で入力した値を、「登録」ボタン押したら、
データベースにデータを登録するという実装を行なっています。

データーベースのデータ型はVARCHARだけど、漢字とかひらがなとか登録して欲しくなく、
英数字だけにして欲しい!というときにどう入力値チェックをすれば良いのか、
良い方法を教えてもらったのでまとめます。

##漢字、ひらがなをはじくにはどうしたら・・?

最初は正規表現で 0~9とかA~Z以外が入ってたらエラーを出すようにしようかな〜とか、
それだと制限かけすぎな気がするから、漢字とかひらがなを検知してくれる何かないかな〜とか考えました。

##文字数とバイト数の比較で出来る

全然浮かばなかったので、少し感動しましたが、
結構使う技なのでしょうか・・・?

:point_up:ひらがな、漢字が入力されてた場合に、文字の長さとバイト数が一致しない。

TextBoxに「こんにちは」と入力された場合、
Shift_JISでバイト数をカウントすると「10」になります。
一方、文字の長さ(Length)は、「5」
不一致です。

:point_up:英数字なら一致する。

TextBoxに「hello」と入力された場合、
Shift_JISでバイト数をカウントすると「5」になります。
一方、文字の長さ(Length)も、「5」
一致です。

if文書いて、不一致の時にエラーを出せば、漢字、ひらがなをはじけそうです。

##実装時、参考になる記事

##終わりに
VisualStudioのTextBoxのIMEモードで入力制御をかけて、
漢字、ひらがなの入力に切り替えできないようにしても、
他から値をコピペすると、TextBoxに値が入ってしまうのが気になります。。
データを入力することも多いとは思いますが、コピペすることも多いと思うので、
漢字、ひらがなのコピペはできないようにするとか無いものなんでしょうか。。。

0
0
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?