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

*目次 [#c577801a]

#contents

*はじめに [#ca357672]

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

*文字コードと文字の変換 [#y8febbc3]

**Unicode→文字 [#k7601172]

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

**文字→Unicode [#u545cc72]

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

**シフトJIS→文字 [#a38c3cd0]

 Chr関数を用いる。

**文字→シフトJIS [#w52c108d]

 Asc関数を利用する。


*制御文字 [#zdde9933]

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

|意味|キャラクターコード|定数|ControlCharsメンバー|
|改行|Chr(13) & Chr(10)|vbCrLf|CrLf|
|キャリッジリターン|Chr(13)|vbCr|Cr|
|ラインフィード|Chr(10)|vbLf|Lf|
|ヌル文字|Chr(0)|vbNullChar|NullChar|
|タブ|Chr(9)|vbTab|Tab|
|バックスペース|Chr(8)|vbBack|Back|

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

 ControlChars.CrLf


*文字列の比較 [#t611e36c]

-比較演算子を用いて、文字列を文字コードにしたときの大小比較ができる。
-文字列を辞書式で大小比較したい場合は、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だから。

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

*全角文字と半角文字を識別する [#k0a15acb]

 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バイト ◇


*接頭語を削除 [#b6b5fd67]

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

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

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



*参考文献 [#rb619505]

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