SQLの窓 イラストAC フリー素材

2010年06月04日

VB.net:StringからChar()への変換とSplit

VB という言語はだいたいにおいて勝手に融通の効く言語ですが、
最初に初めて String オブジェクトの Split メソッドを使おう
とした時に、引数が Char() だったので、面倒に思った記憶が
あります。

ですが。

いろいろ試してみると妙な事が解りました。
Module MyModule

' ********************************************************
' String => Char と Split メソッド
' ※ 区切り文字は、カンマとスペースとタブ
' ********************************************************
Sub Main()

	' Char 配列
	Dim c As Char() = Nothing

	' データセット方法1( Char 明示 )
	c = New Char() { ","c, " "c, "	"c }
	delimTest(c)

	' データセット方法1-2
	c = New Char() { ",", " ", "	" }
	delimTest(c)

	' データセット方法2
	c = New Char() { c(0), c(1), c(2) }
	delimTest(c)

	' データセット方法3
	Dim delim As String = ", 	"
	c = delim.ToCharArray()
	delimTest(c)

	' データセット方法4( ToCharArray は何だったのか )
	c = delim
	delimTest(c)

	' データセット方法5( 何故か正しく動く )
	delimTest(delim)

	' 直接は動かない( たぶん呼び出しルールの違い )
	' ※ 先頭文字しか使われない
	Console.WriteLine(("a,b c	d,e,f,g,x,i,j".Split(delim)).Length)

End Sub

Sub delimTest( c As Char() ) 

	Dim str As String = "a,b c	d,e,f,g,x,i,j"

	Dim result As String() = str.Split(c)

	For Each obj As String In result

		' 読み飛ばし条件
		if obj = "e" then
			Continue For
		end if
		' ループ終了条件
		if obj = "x" then
			Exit For
		end if

		' 処理
		Console.WriteLine( obj )

	Next

End Sub

End Module
VB なので、' データセット方法3 でいいとは思いますが、
他の結果のせいで、少し気持ち悪い気がします。


【VB.netの最新記事】
posted by at 2010-06-04 00:29 | VB.net | このブログの読者になる | 更新情報をチェックする