VB.NET で、文字列を1バイトずつに分解[プログラミング]
(2015-01-30 17:38:19) by shinoda


設定情報なんかを "01100" みたいな文字列にして保管することってあるだろう。
例えば、YES/NO 式のアンケート結果を DB に保存する時に、
「5問の答えを、YES なら 1、NO なら 0 にして一つの文字列にして保存」
なんてね。(特に、Web 系なんかで、フレームワーク化するために DB の全項目の型を「文字列型(VARCHAR)」に統一してる時なんかさ)

上の例が A さんのデータだとすれば、A さんは、2問目、3問目のみ YES と答え、その他は NO と答えたということだな。

こういう文字列を処理する時、1バイトずつに分解して配列に突っ込むのもよくやる方法だろう。

Perl なら、split 関数使って、

@data = split //, $enquate;

で、

$data[0] = 0
$data[1] = 1
$data[2] = 1
$data[3] = 0
$data[4] = 0

のように保存される。
本来、// の間には区切り文字(separator)が入るが、何も入れなければ1文字ずつに分解する。

VB.NET にも Split メソッドが存在しているので、

Dim data() As String = enquate.Split()

みたいに書いてみたけど駄目だった。
Split メソッドの場合、区切り文字を省略した場合、半角スペースを指定したものとみなすようだ。
なんだその仕様(^^;
ああ、英語の場合は、単語間に半角スペースが入るのでこういう仕様は都合がいいのか。文章を単語毎に分割する時。ま、半角スペースくらい、面倒くさがって省略すんなやって思うけど。

まあ、代わりにキャラクタ単位で文字列を分割して配列化する ToCharAllay メソッドがあるので許すけど。

Dim data() As Char = enquate.ToCharArray

これで、data 配列に1文字ずつに分解されたデータが格納される。

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8