VB (4) - 変換.tokyo | henkan.tokyo

【VB】文字列操作一覧


■【VB】文字列操作一覧


・Asc 文字を文字コードへ変換
・Chr 文字コードを文字へ変換
・CStr 値を文字列型(String)へ変換
・Format 指定した書式に変換
・InStr 文字列の前方検索
・InstrRev 文字列の後方検索
・Len、LenB 文字列の文字数、バイト数を取得
・Like 文字列のパターンマッチング
・Mid、Left、Right 文字列の切り取り
・Replace 文字列の置換
・Split 文字列のセパレータ分解
・StrConv 文字列の変換
・Trim、LTrim、RTrim 文字列の先頭、末尾のスペースを削除
・UCase、LCase アルファベットの大文字、小文字変換


●Asc 関数

【機能】文字に対応する文字コードを示す整数型 (Integer) の値を返します。

【書式】result = Asc ( 文字 )

【 例 】
result = Asc("A")  → 65

result = Hex(Asc("A"))  → 41



●Chr 関数

【機能】文字コードに対応する文字を示す文字列型 (String) の値を返します。

【書式】result = Chr ( 文字コード )

【 例 】
result = Chr(34)  → "

result = Chr(9)  → タブ

result = Chr(13) & Chr(10)  → 改行

result = Chr(&HD) & Chr(&HA)  → 改行



●CStr 関数

【機能】値を文字列型(String)へ変換します。

【書式】result = CStr ( 値 )

【 例 】
result = CStr(100)  → 100

result = CStr(Now)  → 2006/12/01 10:09:38



●Format 関数

【機能】値を指定した書式に変換し、その文字列を返します。

【書式】result = Format ( 値 , 書式 )


書式 意味

@ 1つの文字またはスペースを表します。値の中で、@ (アットマーク)に対応する位置に文字が存在する場合は、その文字が表示されます。文字がなければスペースが表示されます。@は、指定した書式の中に表示書式指定文字の ! (感嘆符) がない限り、右から左の順に埋められます。

& 1つの文字を表します。値の中で & (アンパサンド) に対応する位置に文字が存在する場合は、その文字が表示されます。文字がなければ何も表示せず、詰められて表示されます。& は、指定した書式の中に表示書式指定文字の ! (感嘆符) がない限り、右から左の順に埋められます。


< 小文字にします。すべての文字は小文字に変換されます。

> 大文字にします。すべての文字は大文字に変換されます。

! 文字を右から左ではなく、左から右の順に埋めていくように指定します。この文字を指定しない場合は、右から左の順に埋められます。


【 例 】
result = Format( "ABC", "@@@@@" )  → □□ABC ※□は半角スペース

result = Format( "ABC", "!@@@@@" )  → ABC□□ ※□は半角スペース



●InStr 関数

【機能】文字列を前方より検索し、最初に見つかった文字位置を返します。

【書式1】result = InStr ( 検索対象文字列 , 検索文字列 )
【書式2】result = InStr ( 検索開始位置 , 検索対象文字列 , 検索文字列 )

【 例 】
result = InStr( "あいうえうえお", "うえ" )  → 3

result = InStr( 4, "あいうえうえお", "うえ" )  → 5

※ 検索文字列が見つからなかった場合は、0 が戻ります。



●InstrRev 関数

【機能】文字列を後方より検索し、最初に見つかった文字位置を返します。

【書式1】result = InstrRev ( 検索対象文字列 , 検索文字列 )
【書式2】result = InstrRev ( 検索対象文字列 , 検索文字列 , 検索開始位置 )

【 例 】
result = InstrRev( "c:\work\temp\test.txt", "\" )  → 13

result = InstrRev( "c:\work\temp\test.txt", "\" , 12 )  → 8

※ 検索文字列が見つからなかった場合は、0 が戻ります。



●Len、LenB 関数

【機能】文字列の文字数を返します。

【書式】result = Len ( 文字列 )

【機能】文字列のバイト数を返します。

【書式】result = LenB ( 文字列 )

【 例 】
result = Len("ABCあいう")  → 6

result = LenB("ABCあいう")  → 12

result = LenB(StrConv("ABCあいう", vbFromUnicode))  → 9



●Like 演算子

【機能】文字列の比較を行い、比較結果(True / False)を返します。

【書式】result = 比較文字列 Like パターン

? 任意の1文字

* 任意の数の文字

# 任意の1文字の数字 (0-9)

[charlist] 文字リスト charlist に指定した文字の中の任意の1文字

[!charlist] 文字リスト charlist に指定した文字以外の任意の1文字


【 例 】
result = "aBBBa" Like "a*a"  → True

result = "F" Like "[A-Z]"  → True

result = "F" Like "[!A-Z]"  → False

result = "a2a" Like "a#a"  → True

result = "aM5b" Like "a[L-P]#[!c-e]"  → True

result = "BAT123khg" Like "B?T*"  → True

result = "CAT123khg" Like "B?T*"  → False



●Mid、Left、Right 関数

【機能】文字列の指定位置より指定文字数分の文字を切り取り、その文字列を返します。
【書式】result = Mid ( 対象文字列 , 切取開始位置 , 切取文字数 )

【機能】文字列の左端より指定文字数分の文字を切り取り、その文字列を返します。
【書式】result = Left ( 対象文字列 , 切取文字数 )

【機能】文字列の右端より指定文字数分の文字を切り取り、その文字列を返します。
【書式】result = Right ( 対象文字列 , 切取文字数 )

【 例 】
result = Mid( "あいうえお", 2, 3 )  → いうえ

result = Left( "あいうえお", 3 )  → あいう

result = Right( "あいうえお", 3 )  → うえお



●Replace 関数

【機能】指定した文字列の一部を別の文字列に置換し、その文字列を返します。

【書式1】result = Replace ( 置換対象文字列 , 検索文字列 , 置換文字列 )
【書式2】result = Replace ( 置換対象文字列 , 検索文字列 , 置換文字列 , 検索開始位置 , 置換文字列数 )

検索開始位置 省略すると、1 が使用されます。
置換文字列数 省略すると、-1 が使用され、すべての候補が置換されます。

【 例 】
result = Replace( "あいうえうえお", "うえ", "くけ" )  → あいくけくけお



●Split 関数

【機能】文字列を指定のセパレータで分解して配列へ格納する

【書式1】result = Split ( 文字列 , デリミッタ )
【書式2】result = Split ( 文字列 )

【 例 】
Dim strArry() As String

strArry = Split("AAA,BBB,CCC", ",")

→ strArry(0) → "AAA"

strArry(1) → "BBB"

strArry(2) → "CCC"


※ デリミッタ指定を省略した場合は、デリミッタはスペースになります。
※ デリミッタがタブの場合は、vbTab を指定します。



●StrConv 関数

【機能】変換した文字列を返します。

【書式】result = StrConv ( 変換対象文字列 , 変換タイプ )

vbUpperCase 1 文字列を大文字に変換します。

vbLowerCase 2 文字列を小文字に変換します。

vbProperCase 3 文字列の各単語の先頭の文字を大文字に変換します。

vbWide 4 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。

vbNarrow 8 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。

vbKatakana 16 文字列内のひらがなをカタカナに変換します。

vbHiragana 32 文字列内のカタカナをひらがなに変換します。

vbUnicode 64 システムの既定のコード ページを使って文字列をUnicode に変換します。

vbFromUnicode 128 文字列を Unicode からシステムの既定のコード ページに変換します。

【 例 】
result = StrConv( "abcあいうえお", vbUpperCase + vbKatakana )  → ABCアイウエオ



●Trim、LTrim、RTrim 関数

【機能】先頭と末尾のスペースを削除した文字列を返します。
【書式】result = Trim ( 文字列 )

【機能】先頭のスペースを削除した文字列を返します。
【書式】result = LTrim ( 文字列 )

【機能】末尾のスペースを削除した文字列を返します。
【書式】result = RTrim ( 文字列 )

【 例 】
result = Trim( "□□あいうえお□□" )  → あいうえお  ※□はスペース

result = LTrim( "□□あいうえお□□" )  → あいうえお□□  ※□はスペース

result = RTrim( "□□あいうえお□□" )  → □□あいうえお  ※□はスペース

※ 半角、全角かかわらず、スペースを削除します。



●UCase、LCase 関数

【機能】小文字のアルファベットを大文字へ変換した文字列を返します。
【書式】result = UCase ( 文字列 )

【機能】大文字のアルファベットを小文字へ変換した文字列を返します。
【書式】result = LCase ( 文字列 )

【 例 】
result = UCase( "ABCdefABCdef123" )  → ABCDEFABCDEF123

result = LCase( "ABCdefABCdef123" )  → abcdefabcdef123


※ 半角、全角かかわらず、アルファベットを大文字/小文字へ変換します。


【VB】画像を半透明で重ねる/透明色を指定する


■【VB】画像を半透明で重ねる/透明色を指定する


■ファイルから読み込んで半透明で重ねる

以下の例では既に画像が表示されているPictureBox1に、新たな画像をファイルから読み込んで半透明で重ねて表示する。

メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。


■サンプルコード

Dim FileName As String = "C:\Sample1.bmp"
Dim SourceImage As Image = Image.FromFile(FileName)
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim M As New Imaging.ColorMatrix

M.Matrix00 = 1.0F
M.Matrix11 = 1.0F
M.Matrix22 = 1.0F
M.Matrix33 = 0.5F
M.Matrix44 = 1.0F

Attr.SetColorMatrix(M)

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()

SourceImage.Dispose()


'*****************************************************


■PictureBox2の画像を半透明にしてPicutreBox1に重ねる

メモ:PictureBox1とPictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。


■サンプルコード

Dim SourceImage As Image = PictureBox2.Image
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim M As New Imaging.ColorMatrix

M.Matrix00 = 1.0F
M.Matrix11 = 1.0F
M.Matrix22 = 1.0F
M.Matrix33 = 0.5F
M.Matrix44 = 1.0F

Attr.SetColorMatrix(M)

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()


'*****************************************************


■指定した色を透明する

以下の例では既に画像が表示されているPictureBox1に、PictureBox2の画像の白い部分を透明にして重ねる。

メモ1:PictureBox1とPictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。

メモ2:完全に白い部分だけが透明になります。人間の目には白く見えても白と少しでも違う色は透明になりません。


■サンプルコード

Dim SourceImage As Image = PictureBox2.Image
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes

Attr.SetColorKey(Color.White, Color.White) '白を透明色に指定

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()


'*****************************************************


■指定した色の範囲を透明にする


以下の例では既に画像が表示されているPictureBox1に、PictureBox2の画像の薄い灰色の部分から白い部分を透明にして重ねる。

メモ:PictureBox1とPictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。


■サンプルコード

Dim SourceImage As Image = PictureBox2.Image
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim HighColor As Color = Color.FromArgb(255, 255, 255) '白
Dim LowColor As Color = Color.FromArgb(150, 150, 150) '薄い灰色

Attr.SetColorKey(LowColor, HighColor) '薄い灰色から白の範囲の色を透明色に指定

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()


【VB】VB・数値操作(数値まるめ)一覧


■【VB】VB・数値操作(数値まるめ)一覧


●Int 小数点を切り捨てます。
●Fix 小数点を切り捨てます。
●CInt Int型へ変換します。
●CLng Long型へ変換します。
●Round 指定した小数点位置で丸めます。
●Format 指定した書式に変換します。指定した小数点位置で四捨五入します。
●Mod 余りを求めます。
●Val 数値文字列を適切なデータ型に変換します。
●IsNumeric 数値かどうかチェックします。



●Int 関数

【機能】小数部分を取り除いた整数値を返します。

【書式】result = Int ( 数値 )

【 例 】
result = Int("1234.56")  → 1234

result = Int(1234.56)  → 1234

result = Int(-1234.56)  → -1235

result = Fix(-1234.56)  → -1234

result = Int(Null)  → Null

result = Int("")  → エラー:型が一致しません。

result = Int("\1,234.56")  → 1234

result = Int("1234.56-")  → -1235


※ 負の値を指定した場合には、指定数値を超えない最大の負の整数を返します。



●Fix 関数

【機能】小数部分を取り除いた整数値を返します。

【書式】result = Fix ( 数値 )

【 例 】
result = Fix("1234.56")  → 1234

result = Fix(1234.56)  → 1234

result = Fix(-1234.56)  → -1234

result = Int(-1234.56)  → -1235

result = Fix(Null)  → Null

result = Fix("")  → エラー:型が一致しません。

result = Fix("\1,234.56")  → 1234

result = Fix("1234.56-")  → -1234


※ 負の値を指定した場合には、指定数値を超えない最小の負の整数を返します。



●CInt 関数

【機能】Int型へ変換します。小数部分は丸められます。

【書式】result = CInt ( 数値 )

【 例 】
result = CInt("123.4")  → 123

result = CInt("123.5")  → 124

result = CInt("124.4")  → 124

result = CInt("124.5")  → 124

result = CInt("-123.4")  → -123

result = CInt("-123.5")  → -124

result = CInt("-124.4")  → -124

result = CInt("-124.5")  → -124

result = CInt(Null)  → エラー:Nullの使い方が不正です。

result = CInt("")  → エラー:型が一致しません。


※ -32,768 〜 32,767。

※ 小数部分がちょうど 0.5 の場合、最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に丸めます。



●CLng 関数

【機能】Long型へ変換します。小数部分は丸められます。

【書式】result = CLng ( 数値 )

【 例 】
result = CLng("123.4")  → 123

result = CLng("123.5")  → 124

result = CLng("124.4")  → 124

result = CLng("124.5")  → 124

result = CLng("-123.4")  → -123

result = CLng("-123.5")  → -124

result = CLng("-124.4")  → -124

result = CLng("-124.5")  → -124

result = CLng(Null)  → エラー:Nullの使い方が不正です。

result = CLng("")  → エラー:型が一致しません。


※ -2,147,483,648 〜 2,147,483,647。

※ 小数部分がちょうど 0.5 の場合、最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に丸めます。



●Round 関数

【機能】指定された小数点位置で丸めた数値を返します。

【書式】result = Round ( 数値 , [丸めを行う小数点以下の桁数] )

【 例 】
result = Round(123.4)  → 123

result = Round(123.5)  → 124

result = Round(124.4)  → 124

result = Round(124.5)  → 124

result = Round(-123.4)  → -123

result = Round(-123.5)  → -124

result = Round(-124.4)  → -124

result = Round(-124.5)  → -124

result = Round(123.345, 2)  → 123.34

result = Round(123.355, 2)  → 123.36

result = Round(Null)  → Null

result = Round("")  → エラー:型が一致しません。


※ 最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に丸めます。



●Format 関数

【機能】値を指定した書式に変換し、その文字列を返します。

【書式】result = Format ( 値 , 書式 )

書式 意味

0 桁位置や桁数を指定するときに使います。変換対象の数値の桁数が少なく、指定された桁位置に該当する値がない場合は、その桁には 0 が入ります。また、数値の小数部の桁数が小数部に指定した "0" の桁位置を超える場合には、数値の小数部は指定の桁位置に合わせて四捨五入されます。逆に、整数部の桁数が整数部に指定した "0" の桁位置を超える場合には、整数部は変更されることなく、すべて表示されます。

# 桁位置や桁数を指定するときに使います。変換対象の数値の桁数が少なく、指定された桁位置に該当する値がない場合は、その桁には何も入りません。

. 小数点の位置を指定するときに使います。

% 数値を 100 倍し、パーセント記号 (%) を付けるときに指定します。

, 1000 単位の区切り記号を挿入するときに指定します。


【 例 】
result = Format(123.455, "#.00")  → 123.46

result = Format(123.454, "#.00")  → 123.45

result = Format(0.5, "0")  → 1

result = Format(1.5, "0")  → 2

result = Format(123, "00000")  → 00123

result = Format(1234, "#,###,###")  → 1,234

result = Format(0.1234, "###.##%")  → 12.34%



●Mod 演算子

【機能】2つの数値の除算を行い、その剰余を返します。

【書式】result = 5 Mod 2

【 例 】
result = 5 Mod 2  → 1



●Val 関数

【機能】数値を適切なデータ型に変換して返します。

【書式】result = Val(数値文字列)

【 例 】
result = Val("123.45")  → 123.45

result = Val("123個")  → 123

result = Val("123,456")  → 123



●IsNumeric 関数

【機能】数値かどうかチェックします。

【書式】result = IsNumeric(値)

【 例 】
result = IsNumeric(123)  → True

result = IsNumeric("123.45")  → True

result = IsNumeric(".")  → False

result = IsNumeric("\12,300")  → True

result = IsNumeric("")  → False

result = IsNumeric(Null)  → False


【VB】配列を利用した文字列の連結(Concat)


■【VB】配列を利用した文字列の連結(Concat)


・配列を利用した文字列を連結する

文字列と文字列を連結するには「&」や「+」のような連結演算子を用いる方法とConcatメソッドを使用する方法があります。
Concatメソッドは配列を利用した文字列の連結も行えます。


VB文字列連結Concat


【サンプルコード】

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

'連結演算子を使用する

Label1.Text = TextBox1.Text + TextBox2.Text + TextBox3.Text

End Sub


Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

'Concatメソッドを使用する

Dim x() As String = {TextBox1.Text, TextBox2.Text, TextBox3.Text}

Label1.Text = String.Concat(x)

End Sub


【VB】フォームで [Enter] キーが押された時にフォーカスを遷移させる


■【VB】フォームで [Enter] キーが押された時にフォーカスを遷移させる

方法としては、フォームの KeyPreview を True にしてフォームで一括処理するのが簡単かと思います。
各コントロールのキーイベントで実装すると、保守性が悪くなります。ちなみに、MultiLine なテキストボックスで改行を [Ctrl] + [Enter] で代用できるように考慮しています。

利用の際には KeyPreview を True にしておいてください。


■サンプルコード

' [Enter] キーで次の TabIndex があるコントロールへフォーカスを移す

Private Sub Form1_KeyDown _

(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

If e.KeyCode = Keys.Enter Then

If e.Control = False Then

Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)

End If

End If

End Sub


' フォーカス遷移後の音を消すためにキーイベントが処理されたことにする

Private Sub Form1_KeyPress _

(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

If e.KeyChar = ControlChars.Cr Then

e.Handled = True

End If

End Sub