|
■No96590 (かる さん) に返信 > はじめまして。 > StrConv関数の引数に VbStrConv.Narrow を渡して全角→半角変換をする処理があるのですが、 > これをカルチャが「en-US」の環境下で実行すると ArgumentException が発生します。 第3引数 LocaleID に &H411 を指定してみてください。 未指定時には 0 が指定されことになり、OS 既定のロケールで処理されます。
> この「アジアロケールかどうか」を調べる方法について検索できませんでした。 例外を Catch して失敗すれば未サポート。
Enum LCID As Integer Us = &H409 It = &H410 Ja = &H411 Ko = &H412 [Default] = 0 End Enum Sub Main() Dim sb As New System.Text.StringBuilder() For Each st In New String() {ChrW(&H30F4), ChrW(&HFF20), ChrW(&H3140), ChrW(&HFFB0)} sb.AppendLine("元字: " & st) For Each localeId As LCID In {LCID.Default, LCID.Us, LCID.It, LCID.Ja, LCID.Ko} sb.Append(" LocaleId=" & localeId & "で変換") Try sb.Append(" 半角:" & StrConv(st, VbStrConv.Narrow, localeId)) Catch ex As Exception sb.Append(" 半角:Error") End Try Try sb.Append(" 全角: " & StrConv(st, VbStrConv.Wide, localeId)) Catch ex As Exception sb.Append(" 全角:Error") End Try sb.AppendLine() Next Next MsgBox(sb.ToString()) End Sub
|