[an error occurred while processing this directive] [an error occurred while processing this directive] .NET TIPS:文字列を全角/半角に変換するには?(VB.NET関数活用) - @IT
[an error occurred while processing this directive]
【@記事種別@】
[an error occurred while processing this directive]
文字列を全角/半角に変換するには?(VB.NET関数活用)

.NET TIPS

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

遠藤 孝信
2005/02/18
デジタルアドバンテージ

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

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

 VB.NETでは、文字列を全角/半角に変換にはStrConv関数(Microsoft.VisualBasic名前空間)を利用する。

 まず、全角文字を半角に変換するには、第1パラメータに変換する文字列、第2パラメータに「VbStrConv.Narrow」を指定する。VbStrConv.NarrowはVbStrConv列挙体(Microsoft.VisualBasic名前空間)で定義されている値である。StrConv関数は変換後の文字列を返す。

Visual Basic
hankaku = StrConv("ゼンカクの文字列", VbStrConv.Narrow) '戻り値:ゼンカクの文字列

 半角文字を全角に変換するには、第2パラメータに「VbStrConv.Wide」を指定すればよい。

Visual Basic
zenkaku = StrConv("ハンカクノモジレツ", VbStrConv.Wide) '戻り値:ハンカクノモジレツ

 StrConv関数では、第3パラメータとしてカルチャ(言語や地域固有の情報)を示すID(カルチャ識別子)を指定できるが、このパラメータは省略可能である。省略した場合にはIDとして0を指定したことになる(0はシステムで既定のカルチャを示す)。

 どちらの場合の変換も、変換不可能な文字(漢字やひらがななど)は変換されずにそのまま戻り値の文字列に含まれる。

 以下に、StrConv関数を使用したVB.NETのサンプル・プログラムを示す。

Visual Basic
' 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#のプログラムを示す。

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関数活用)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]