- PR -

全角半角混在状態でのバイト数チェック

1
投稿者投稿内容
TX
会議室デビュー日: 2005/08/16
投稿数: 3
投稿日時: 2005-08-26 17:17
お世話になっております。

VB.NET2003で、あるテキストボックスに入力した値を、
Oracle9iのテーブルの列(VARCHAR2(10))に格納させるのですが、
全角半角混在でこのテーブルの長さ以上の文字列を入力されてしまった
場合、エラーとしてはじく方法でいきずまっております。

例として‘情報AG0826’と入力された場合、
単純に、txt_hoge.Lengthでカウントすると、8ということになり、
エラーとしてはじけません。

全角は2、半角は1として正しく認識させる方法につき、
どなたか教えて下さい。
よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-26 17:25
引用:

例として‘情報AG0826’と入力された場合、
単純に、txt_hoge.Lengthでカウントすると、8ということになり、
エラーとしてはじけません。



コード:

    Public Shared Function GetByteCount(ByVal target As String) As Integer
        Return System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(target)
    End Function





_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hira
常連さん
会議室デビュー日: 2004/05/07
投稿数: 33
投稿日時: 2005-08-26 18:11
下記の記事に書いてある、文字列の全角/半角をチェックする関数を
作って、チェックしたらどうですか?

http://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html

【編集】
 すみません。もっといいのがありましたね。

文字列のバイト数を取得するには?
 http://www.atmarkit.co.jp/fdotnet/dotnettips/012strcount/strcount.html

の方法で、バイト数チェックすればいいですね。

[ メッセージ編集済み 編集者: hira 編集日時 2005-08-26 18:14 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-26 18:41
使い方。

コード:

Private Sub txtHoge_Validating(...) Handles txtHoge.Validating
    If Me.ActiveControl Is Me.txtHoge Then Return

  If GetByteCount(Me.txtHoge.Text) > 10 Then
        MessageBox.Show("10 バイト以内で入力汁!")
        e.Cancel = True
    End If
End Sub




_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hira
常連さん
会議室デビュー日: 2004/05/07
投稿数: 33
投稿日時: 2005-08-26 19:58
じゃんぬねっとさん、スミマセン。

よくみると、ずばりの答えを回答されてますね^^;

気付きませんでした・・・。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-26 20:11
引用:

よくみると、ずばりの答えを回答されてますね^^;
気付きませんでした・・・。


以前のスレッドでも TX さんはフィードバックを怠っているため、
同じ問題にぶつかった人が解決できるスレッドでなくなってしまう可能性があったゆえに、
ずばりの回答 (解答) をさせて頂きました。

本来は、検索結果や @IT の記事などで誘導する方が、
回答者としては優しい導きだと思います。

# 普段は私も、解答ではなく回答をするように心がけてます。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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