さて、来週には Visual Basic を開発言語にする案件を受注できそうなので、色々と細々した動きを実験してみる。
何せ、.NET 系の Visual Basic は初めての経験なので(^^;、絶対に必要になる「正規表現」と「連想配列」の書き方もまったくわからん。
つーことで、入門書やサイトを参考に、取りあえず、
(1) コンフィグファイルを読み込む
※コンフィグファイルには、設定項目名と設定値がTAB区切りで書かれている
(例)HOST ftp.exsample.com
(2) 正規表現を使い、設定項目名と設定値を切り出す
(3) 切り出した設定項目名をキーとした連想配列(ハッシュ)に設定値をセット
・・・という動きをするコンソールアプリケーションを書いてみた。
下記のような感じ。(Main 処理の For Each はデバッグ用なので意味無し)
Imports System
Imports System.IO
Imports System.Text
Imports System.CollectionsModule Module1
Public gConfig As Hashtable = New Hashtable
Sub Main()
ConfigRead()
' DEBUG用出力
For Each key As String In gConfig.Keys
Console.WriteLine("gConfig({0})={1}", key, gConfig(key))
NextEnd Sub
Sub ConfigRead()
Dim line As String = ""
Dim al As New ArrayList
Dim fn As String = "M:\x\tmp\job\config.txt"Using sr As StreamReader = New StreamReader(fn, Encoding.GetEncoding("Shift_JIS"))
line = sr.ReadLine()
Do Until line Is Nothing
al.Add(line)
line = sr.ReadLine()
LoopEnd Using
For i As Integer = 0 To al.Count - 1
Dim r As New System.Text.RegularExpressions.Regex("^(.+?)\t(.+)$")
Dim mc As System.Text.RegularExpressions.MatchCollection = r.Matches(al.Item(i))For Each m As System.Text.RegularExpressions.Match In mc
gConfig(m.Groups(1).Value) = m.Groups(2).Value
NextNext i
End Sub
End Module
これで、ばっちりグローバル変数で定義した連想配列 gConfig に、config.txt から読み込んだ設定内容がセットされた。
しかし、Visual Basic の正規表現。Web 上でも何か情報が妙に古かったり、そもそも情報が少なかったり。(^^:
あんま、VB の世界じゃ使われんのかね?(そう言えば、VB しか知らないプログラマに正規表現の話をしたら、きょとんとしてたな(^^;)
正規表現が使えれば、substr を始め、いくつかの文字列編集関係の命令は不要になるほど正規表現は強力なんだけどな。
もっと正規表現を使おう!!>VB プログラマ
コメントする