【Studio】半角全角判定について

ご確認ありがとうございます。
文字列情報を取得後、取得した文字列が全角か半角英数字かでその後の処理を条件分岐させたいのですが、全角か半角英数字条件分岐させるためのif文が分かりません。

知見あるかたご教授いただければ幸いです。
宜しくお願い致します。

<補足事項>
取得する文字列には必ず含まれている文字や数字がなく、特定の文字が含まているから全角だと判断するみたいな分岐はできないです。

文字列であれば混合しているケースもあると思いますが、そのあたりの厳密な判定条件はどのようになりますでしょうか?

全角と半角が混合しているパターンはないです

簡易的には以下でいかがでしょうか?

strVar=StrConv(strVar,vbStrConv.Wide,&H411)

こんな感じではどうでしょう。

全角判定
System.Text.RegularExpressions.Regex.IsMatch(strText, “[^\x00-\x7F]”)

半角判定
System.Text.RegularExpressions.Regex.IsMatch(strText, “[1]+$”)


  1. a-zA-Z0-9 ↩︎

Unicodeの世界で全角半角を言及しだすとかなり面倒なのですが、少なくとも上記だと半角カナが誤判定されるので、正規表現を使用するならとりえあずは以下くらいかと。

System.Text.RegularExpressions.Regex.IsMatch(strVar, "[^\u0000-\u007F\uFF61-\uFF9F]")

それでも例えば以下のような文字(以下は0x00A5と0x00FC)は抜け落ちますが

¥
ü
1 Like