連載
» 2005年02月18日 05時00分 公開

.NET TIPS:文字列を全角/半角に変換するには?(VB.NET関数活用)

VB.NETには、文字列中の全角文字を半角文字(半角英数字、半角カタカナなど)に、あるいはその逆に変換するための関数が用意されている。その利用方法や注意点、C#からその関数を利用する方法について解説する。

[遠藤孝信,デジタルアドバンテージ]
「.NET TIPS」のインデックス

連載目次

 文字列中の全角文字を半角文字(半角英数字、半角カタカナなど)に、あるいは半角文字を全角文字に変換するための関数がVB.NETには用意されている。本稿では、その利用方法と注意点、その関数をC#から利用する方法について解説する。

VB.NETにおける全角/半角の変換

 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

全角/半角の変換を行うVB.NETのサンプル・プログラム(vbhanzen.vb)
vbhanzen.vbのダウンロード

 StrConv関数利用時にはいくつかの注意点がある。上記サンプル・プログラムにある出力例からも分かるように、全角のバックスラッシュ「\」は半角には変換されない。さらに、全角の円マーク「¥」は半角に変換されるが、半角の円マーク「\」は全角には変換されない。

 また、濁点「゛」や半濁音符「゜」が付いた全角文字(「ガ」や「パ」)は、2つの半角文字からなる文字列に変換される。逆に、この2文字の半角文字(「ガ」や「パ」)は、1つの全角文字に変換できる。ただし単独の濁点や半濁音符は、1つの文字として全角や半角に変換される。

C#における全角/半角の変換

 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

VB.NETのStrConv関数を使用して全角/半角の変換を行うC#のサンプル・プログラム(vbhanzen.cs)
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関数活用)


「.NET TIPS」のインデックス

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。