@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

全角文字チェック

1
投稿者投稿内容
せんべい
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 61
お住まい・勤務地: 神奈川県川崎市
投稿日時: 2003-01-28 14:31
せんべいと申します

 全角文字チェックの件でお聞きしたいことがあります。
アルファベットと数字、カタカナの場合は・・・

Dim a As String = <チェックする文字列>
If a = StrConv(a, VbStrConv.Narrow) Then
' 全角なし
Else
' 全角あり
End If

で良いと思うのですが、ひらがなと漢字が含まれて
いるときはこのチェックでは駄目だと思うのです
が、どうしたらよいでしょうか?Unicodeなので
バイト数でちぇっくもできないですし・・・。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-01-28 23:56
System.Text.Encodingというクラスがあります。
使ってみてはどうでしょう?
xkimura
会議室デビュー日: 2002/12/18
投稿数: 11
お住まい・勤務地: 新潟県
投稿日時: 2003-01-29 11:28
一郎さんの補足です。
下記の様なコードで文字列のバイト数が取得できます。

------------------------------------------------------------------
Dim str As String = <チェックする文字列>
Dim lengths As Integer = System.Text.Encoding.GetEncoding("Shift_Jis").GetByteCount(str)

MessageBox.Show(lengths.ToString)
------------------------------------------------------------------
せんべい
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 61
お住まい・勤務地: 神奈川県川崎市
投稿日時: 2003-01-29 19:11
せんべいです

ありがとうございます。
その後、考えた結果、私もそのようにしました。

----
Dim ary() As Char = ***.ToCharArray()   <- *** はチェックしたい文字列

Dim i As Integer
For i = 0 To ary.Length - 1
If Encoding.GetEncoding("Shift_JIS").GetBytes(ary(i)).Length = 2 Then
' 全角や!
End If
Next
----
みたいな感じです。スマートじゃないですよね〜。


[ メッセージ編集済み 編集者: せんべい 編集日時 2003-01-29 19:14 ]
omatsu
常連さん
会議室デビュー日: 2002/08/29
投稿数: 20
投稿日時: 2003-01-30 14:52
引用:

せんべいさんの書き込み (2003-01-29 19:11) より:

Dim ary() As Char = ***.ToCharArray()   <- *** はチェックしたい文字列

Dim i As Integer
For i = 0 To ary.Length - 1
If Encoding.GetEncoding("Shift_JIS").GetBytes(ary(i)).Length = 2 Then
' 全角や!
End If
Next
----
みたいな感じです。スマートじゃないですよね〜。

[ メッセージ編集済み 編集者: せんべい 編集日時 2003-01-29 19:14 ]



半角文字だけで構成されているかどうかをチェックしたいんですよね?

コード:
If Encoding.GetEncoding("Shift_JIS").GetByteCount(str) <> str.Length Then

'全角文字が混ざっている!!
End If



でいいんじゃないでしょうか。

[ メッセージ編集済み 編集者: omatsu 編集日時 2003-01-30 14:57 ]

[ メッセージ編集済み 編集者: omatsu 編集日時 2003-01-30 14:58 ]
1

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