このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

はじめに

  • Visual Basicにおいてデフォルトで使用されている文字コードはUnicodeである。
    • 別の文字コードを使用することもできる。

文字コードと文字の変換

Unicode→文字

 ChrW関数を利用する。ChrW関数は引数として与えられた文字コードを、Unicodeに変換して返す。

文字→Unicode

 AscW関数を利用する。AscW関数は文字列を引数として受け取ることができ、その先頭文字に対応するUnicodeをInteger型として返す。

シフトJIS→文字

 Chr関数を用いる。

文字→シフトJIS

 Asc関数を利用する。

制御文字

 通常の文字とは異なり、改行やタブなどのように特殊な意味を持つ文字を制御文字と呼ぶ。

意味キャラクターコード定数ControlCharsメンバー
改行Chr(13) & Chr(10)vbCrLfCrLf
キャリッジリターンChr(13)vbCrCr
ラインフィードChr(10)vbLfLf
ヌル文字Chr(0)vbNullCharNullChar
タブChr(9)vbTabTab
バックスペースChr(8)vbBackBack

 ControlCharsメンバーを用いる場合は、次のように指定する。

ControlChars.CrLf

文字列の比較

  • 比較演算子を用いて、文字列を文字コードにしたときの大小比較ができる。
  • 文字列を辞書式で大小比較したい場合は、Option CompareステートメントでTextを指定してコードの先頭に記述しておくか、String.Compareスタティックメソッドを使う。
    • Option Compare Textなら文字列として比較
    • Option Compare Binaryなら文字コードとして比較。
    • どちらも記述しなければ、Binaryが指定されたとしてみなされる。
    • String.CompareOrdinalスタティックメソッドは文字コードで比較する。

例:

  • 文字コードの比較
    • "APPLE" > "APE"がTrue
      • "P"の文字コード > "E"の文字コード
    • "APPLE" > "ape"がFalse
      • "A"の文字コードは65、"a"の文字コードは97だから。

 以上により、文字列の大小比較のときは文字コードでの比較か文字そのものでの比較かを念頭に置く必要がある。なお、一致するかどうかを比較するときは、文字コードか文字そのものかを意識せずに=演算子を使えばよい。

全角文字と半角文字を識別する

If Len(strValue) = System.Text.Encoding.GetEncoding("Shift-JIS").GetByteCount(strValue) Then
 Debug.Print("半角文字だけである。")
Else If Len(strValue) = 2 * System.Text.Encoding.GetEncoding("Shift-JIS").GetByteCount(strValue) Then
 Debug.Print("全角文字だけである。")
Else
 Debug.Print("半角文字・全角文字が混在している。")
End If

 Len()は文字数を取得する関数である。一方、EncodingクラスのGetByteCount()はバイト数を取得するメソッドである。

 よって、文字数とバイト数が一致すれば、指定された文字列strValueはすべて半角文字で構成されていることを意味する。

[補講]半角1文字=1バイト、全角1文字=2バイト ◇

接頭語を削除

例:先頭の1バイトを削除

Dim str1 As String = "abcdefg"
Dim str2 As String = str1.Substring(1)

[注意]Trimは連続して同じ文字が存在するときは、丸ごと削除してしまう。 ◇

参考文献

  • 『ゼロからはじめるWindowsプログラミング Visual Basic 2008入門』