こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

数字の全角文字を調べる

visual basic 2008に関する質問です。

テキストボックスに入力した文字列の中に、数字の全角文字が
含まれているかどうかをチェックするメソッドはありますか?

下記の内容でビルドすると、エラーとなります。

(ソースより抜粋)---------------------------------------
Dim str As String = TextBox1.Text
Dim chr As Char = str.Chars(0)

If ((chr >= &H8250) And (chr <= &H8258)) Then
Label1.Text = "数字は半角文字で入力して下さい。"
End If
-------------------------------------------------------

(エラー内容)-------------------------------------------
演算子'>='は、型'Char'および'Integer'に対して定義されて
いません。
演算子'<='は、型'Char'および'Integer'に対して定義されて
いません。
-------------------------------------------------------

使用OSは、Windows Vistaです。
質問とあわせて、上記のエラーの対処方法について教えて頂けると
助かります。

投稿日時 - 2008-12-06 12:51:04

QNo.4534038

すぐに回答ほしいです

質問者が選んだベストアンサー

Class Q4534038

Shared Sub Main()

Dim Str As String = "01239"
For i As Integer = 0 to Str.Length - 1
Dim codepoint As Integer = Char.ConvertToUtf32(str,i)
'Integer同士で比較すればよし。16進リテラルは負になることがあるらしいので,10進リテラルで比較。Unicodeのコードポイントで比較した。
If codepoint >= 65296 AndAlso codepoint <= 65305 Then
System.Console.WriteLine("U+FF10-U+FF19の文字が" & i.toString() & "文字目に使われています。:" & codepoint.ToString())
End If
Next

'説明しないけど正規表現使った方が楽かもね(System.Text.RegularExpressions.RegEx)
'必要ならInteger.ParseやDouble.Parseが使えないか検討しよう。
'個人的には「U+FF10-U+FF19」と「U+0030-U+0039以外」を区別すること自体が嫌い
'もっと嫌いなのはこちらの誤りを一切指摘せず,勝手に誤りを訂正して処理を進めるタイプ

System.Console.ReadKey(true)
End Sub

End Class

投稿日時 - 2008-12-06 16:28:57

お礼

返事が遅くなり申し訳ございません。

問題は解決しました。
ありがとうございました。

投稿日時 - 2009-10-08 09:40:51

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問