お世話になります
正規表現を使って、文字列操作をしております。
例えば、住所文字列に神奈川なら関東、秋田なら東北,北海道なら北海道
とする条件判断をする場合
---
sAddress = "元の住所文字列"
sArea = [地域文字列]
re.Pattern = "神奈川|..(その他関東エリア)"
if re.test(sAddress) then
sArea = "関東"
else
re.pattern = "秋田|..(その他東北エリア)"
if re.test(sAddress) then
sArea = "東北"
else
re.pattern = "北海道"
if re.test(sAddress) then
sArea = "北海道"
end if
end if
end if
とif の多重化になってしまいなんとなく気持ち悪いのですが、
if 〜 elseif 〜 endif のように綺麗にきまる書き方はありますか
(select case)でもかまいません
このコードは VB.NET のものでは無さそうですね。VBS/VBA/VB6 等かな?
> 住所文字列に神奈川なら関東、秋田なら東北,北海道なら北海道
「東京都千代田区」という住所には、"京都"という文字列が含まれます。
「北海道北広島市」という住所には、"広島"という文字列が含まれます。
先頭一致にするとか、検索順を調整するなど、何かしらの対策を
打たないと、誤った分類になってしまうかもしれません。ご注意あれ。
> if の多重化になってしまいなんとなく気持ち悪いのですが、
私なら、
キー:地域名
値:正規表現
とした Dictionary を用意します。
'Set dict = CreateObject("Scripting.Dictionary")
Set dict = New Scripting.Dictionary
'都道府県を地方別のグループに定義しておく
dict.Add "関東", "神奈川県|埼玉県|千葉県"
dict.Add "東北", "秋田県|青森県|岩手県"
dict.Add "四国", "香川県|高知県|愛媛県"
--------
で、調査するときにはこんな感じ。
グループがどんなに増えても、If 文は一個で済みます。
sArea = ""
For Each vKey In dict
re.Pattern = dict(vKey)
If re.Test(sAddress) Then
sArea = vKey
Exit For
End If
Next
弁士様、お世話になっております
Dictionaryですか、
いまいち使いどころがわからなかったのですが
こういう使い方があるのですね
ありがとうございました
ツイート | ![]() |