- PR -

VB2005での全角半角チェック

1
投稿者投稿内容
たか
常連さん
会議室デビュー日: 2006/07/25
投稿数: 24
投稿日時: 2006-09-03 21:34
VB2005で開発している初心者です。

テキストボックスに入力された文字列の全角、半角チェックを行いのですが
何かいい処理方法はありますでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-03 21:43
引用:

たかさんの書き込み (2006-09-03 21:34) より:

テキストボックスに入力された文字列の全角、半角チェックを行いのですが
何かいい処理方法はありますでしょうか?


正規表現 Or Shift_JIS にエンコーディングしてバイト数で判断。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
にー
常連さん
会議室デビュー日: 2006/04/30
投稿数: 35
投稿日時: 2006-09-03 21:57
shift_jisに変換してチェック方法は

IsWide( string checkStr ) {
  Encoding sjisEncoding = Encoding.GetEncoding( "Shift_JIS" );
  int sjisSize = sjisEncoding.GetByteCount( checkStr );
  if ( checkStr.Length * 2 <= sjisSize )
    return true;  // 全角文字だけ
  return false;  // 全角文字だけでない
}

こんな感じですね。

全角文字を含む場合とかチェックしたい条件によって、if文は変わりますね。
たか
常連さん
会議室デビュー日: 2006/07/25
投稿数: 24
投稿日時: 2006-09-03 22:00
引用:

じゃんぬねっとさんの書き込み (2006-09-03 21:43) より:

正規表現 Or Shift_JIS にエンコーディングしてバイト数で判断。



じゃんぬねっとさん
ありがとうございます。
UTF8のGetByteCountよりバイト数を取得し、テキストボックスの文字数を比較して
同じでなければ半角文字例でないという判断をすることにしました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-03 22:48
引用:

たかさんの書き込み (2006-09-03 22:00) より:

UTF8のGetByteCountよりバイト数を取得し、テキストボックスの文字数を比較して
同じでなければ半角文字例でないという判断をすることにしました。


Σ(;゚Д゚) U、UTF8!?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たか
常連さん
会議室デビュー日: 2006/07/25
投稿数: 24
投稿日時: 2006-09-03 23:23
引用:

じゃんぬねっとさんの書き込み (2006-09-03 22:48) より:
Σ(;゚Д゚) U、UTF8!?




あれ?!もしかして間違ってましたか・・・?
System.Text.Encoding.UTF8.GetByteCount(TextBox.Text)
でバイト数を取得するようにしたのですが、、、
まずいですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-03 23:35
引用:

たかさんの書き込み (2006-09-03 23:23) より:

あれ?!もしかして間違ってましたか・・・?
System.Text.Encoding.UTF8.GetByteCount(TextBox.Text)
でバイト数を取得するようにしたのですが、、、まずいですか?


(゚Д゚) マズー。

コード:

    Me.TextBox1.Text = "あいうえお12345"

    MessageBox.Show(System.Text.Encoding.UTF8.GetByteCount(Me.TextBox1.Text).ToString())


この場合、「'15' と出力されなければ意味がない」 と思わなかったのでしょうか?
それとも、評価もしないで解決にしてしまおうとしたのでしょうか?

# というより、当初から Shift_JIS という単語が出てきていますし...
# にーさんの投稿に至っては、まさに '解' そのものだと思いますけど...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たか
常連さん
会議室デビュー日: 2006/07/25
投稿数: 24
投稿日時: 2006-09-04 00:18
じゃんぬねっとさん
にーさん

こんばんは。
ご回答ありがとうございました。

確かに、バイト数のチェックもせずに解決したものだと思い込んでいました。
”あああああ12345”を試したら確かに15ではなく20を取得しておりました。

SJISに変換してから判断するように対応を行いたいと思います。
お手数お掛け致しました。
1

スキルアップ/キャリアアップ(JOB@IT)