VB.NETには、文字列中の全角文字を半角文字(半角英数字、半角カタカナなど)に、あるいはその逆に変換するための関数が用意されている。その利用方法や注意点、C#からその関数を利用する方法について解説する。
文字列中の全角文字を半角文字(半角英数字、半角カタカナなど)に、あるいは半角文字を全角文字に変換するための関数がVB.NETには用意されている。本稿では、その利用方法と注意点、その関数をC#から利用する方法について解説する。
VB.NETでは、文字列を全角/半角に変換にはStrConv関数(Microsoft.VisualBasic名前空間)を利用する。
まず、全角文字を半角に変換するには、第1パラメータに変換する文字列、第2パラメータに「VbStrConv.Narrow」を指定する。VbStrConv.NarrowはVbStrConv列挙体(Microsoft.VisualBasic名前空間)で定義されている値である。StrConv関数は変換後の文字列を返す。
hankaku = StrConv("ゼンカクの文字列", VbStrConv.Narrow) '戻り値:ゼンカクの文字列
半角文字を全角に変換するには、第2パラメータに「VbStrConv.Wide」を指定すればよい。
zenkaku = StrConv("ハンカクノモジレツ", VbStrConv.Wide) '戻り値:ハンカクノモジレツ
StrConv関数では、第3パラメータとしてカルチャ(言語や地域固有の情報)を示すID(カルチャ識別子)を指定できるが、このパラメータは省略可能である。省略した場合にはIDとして0を指定したことになる(0はシステムで既定のカルチャを示す)。
どちらの場合の変換も、変換不可能な文字(漢字やひらがななど)は変換されずにそのまま戻り値の文字列に含まれる。
以下に、StrConv関数を使用したVB.NETのサンプル・プログラムを示す。
' vbhanzen.vb
Imports System
Imports Microsoft.VisualBasic
Public Class VBHankakuZenkaku
Shared Sub Main()
Dim zenkaku, hankaku As String
zenkaku = " ABC123アイウガギグパピプ゛゜!#¥\"
hankaku = StrConv(zenkaku, VbStrConv.Narrow)
Console.WriteLine(hankaku)
' 出力:【 ABC123アイウガギグパピプ゙゚!#\\】
hankaku = " ABC123アイウガギグパピプ゙゚!#\"
zenkaku = StrConv(hankaku, VbStrConv.Wide)
Console.WriteLine(zenkaku)
' 出力:【 ABC123アイウガギグパピプ゛゜!#\】
End Sub
End Class
' コンパイル方法:vbc vbhanzen.vb
StrConv関数利用時にはいくつかの注意点がある。上記サンプル・プログラムにある出力例からも分かるように、全角のバックスラッシュ「\」は半角には変換されない。さらに、全角の円マーク「¥」は半角に変換されるが、半角の円マーク「\」は全角には変換されない。
また、濁点「゛」や半濁音符「゜」が付いた全角文字(「ガ」や「パ」)は、2つの半角文字からなる文字列に変換される。逆に、この2文字の半角文字(「ガ」や「パ」)は、1つの全角文字に変換できる。ただし単独の濁点や半濁音符は、1つの文字として全角や半角に変換される。
VB.NETの関数は、C#からも利用できる。その具体的な利用方法については「TIPS:VB.NET固有の関数をC#で使用するには?」で解説している。
C#では、StrConv関数はStringsクラス(Microsoft.VisualBasic名前空間)の静的メソッドであるStrConvメソッドとして利用可能だ。以下に先ほどのVB.NETのサンプル・プログラムと同等のC#のプログラムを示す。
// vbhanzen.cs
using System;
using Microsoft.VisualBasic;
public class VBHankakuZenkaku {
static void Main() {
string zenkaku, hankaku;
zenkaku = " ABC123アイウガギグパピプ゛゜!#¥\";
hankaku = Strings.StrConv(zenkaku, VbStrConv.Narrow, 0);
Console.WriteLine(hankaku);
// 出力:【 ABC123アイウガギグパピプ゙゚!#\\】
hankaku = @" ABC123アイウガギグパピプ゙゚!#\";
zenkaku = Strings.StrConv(hankaku, VbStrConv.Wide, 0);
Console.WriteLine(zenkaku);
// 出力:【 ABC123アイウガギグパピプ゛゜!#\】
}
}
// コンパイル方法:csc /r:Microsoft.VisualBasic.dll vbhanzen.cs
C#ではStrConv関数のような省略可能なパラメータを持つメソッドを呼び出す場合に、そのパラメータを省略できない。そのため上記のサンプル・プログラムでは、StrConvメソッドの第3パラメータとして明示的に「0」を指定している。
StrConv関数は、ここで解説した全角/半角の変換以外にも、文字列のひらがな/カタカナ変換も可能である。これについては「TIPS:文字列をひらがな/カタカナに変換するには?(VB.NET関数活用)」で解説している。
カテゴリ:クラス・ライブラリ 処理対象:文字列
カテゴリ:C# 処理対象:VB.NET関数
使用ライブラリ:StrConv関数(Microsoft.VisualBasic名前空間)
使用ライブラリ:Stringsクラス(Microsoft.VisualBasic名前空間)
使用ライブラリ:VbStrConv列挙体(Microsoft.VisualBasic名前空間)
関連TIPS:VB.NET固有の関数をC#で使用するには?
関連TIPS:文字列をひらがな/カタカナに変換するには?(VB.NET関数活用)
Copyright© Digital Advantage Corp. All Rights Reserved.