人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://q.hatena.ne.jp/1236879956
の続きの質問です。文字列が"abc自動車=プリウス"の場合はプリウスを取り出すことができました。
しかし、例えば"abc自動車=プリウス&ab=ab&ab"といったような文字列があった場合。
つまり、一番最初の=の後から&直前まで取り出したいときはどのようにすればよいでしょうか?
上記の質問ではInStrRev関数を利用しましたが、最初のイコールの後の値を取得したい場合は
どうしたらいいでしょうか?


●質問者: akaired
●カテゴリ:コンピュータ インターネット
✍キーワード:ABC イコール プリウス 文字列 自動車
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●50ポイント
 Dim s As String
 Dim p1 As Integer  '=の位置
 Dim p2 As Integer  '&の位置

 s = "abc自動車=プリウス&ab=ab&ab"
 p1 = InStr(1, s, "=")
 p2 = InStr(p1, s, "&")
 MsgBox Mid(s, p1 + 1, p2 - p1 - 1)
◎質問者からの返答

ご回答ありがとうございます!助かりました!


2 ● Mook
●100ポイント ベストアンサー

testMain を実行してみてください。

結果は VBE のイミディエイトウィンドウに出ます。

(わからなかったら、Debug.Print を MsgBox にしてみてください。)


余計な部分が多いですが、今回の質問の部分は getItem( データ ) で希望の内容が取得できると思います。

Sub testMain()
 Debug.Print getItem("自動車=マーチ") & " // " & getData("自動車=マーチ")
 
 Dim data As String
 data = "自動車=クラウン&自動二輪=ZII&三輪車=マッハ号"
 Debug.Print getItem(data) & " // " & getData(data)
 Debug.Print getItem(data, 1) & " // " & getData(data, 1)
 Debug.Print getItem(data, 2) & " // " & getData(data, 2)
End Sub

'-------------------------------------------------------------------
' num 番目の Item 名(=の左側)を取得
' num は省略時は先頭、num だけデータがないときは空白を返す
'-------------------------------------------------------------------
Function getItem(data As String, Optional num As Integer = 0)
'-------------------------------------------------------------------
 Dim wArray As Variant
 wArray = Split(data, "&")
 If UBound(wArray) >= (num - 1) Then
 If InStr(wArray(num), "=") > 0 Then
 getItem = Left(wArray(num), InStr(wArray(num), "=") - 1)
 Else
 getItem = wArray(num)
 End If
 Else
 getItem = ""
 End If
End Function

'-------------------------------------------------------------------
' num 番目の Data 名(=の右側)を取得
' num は省略時は先頭、num だけデータがないときは空白を返す
'-------------------------------------------------------------------
Function getData(data As String, Optional num As Integer = 0)
'-------------------------------------------------------------------
 Dim wArray As Variant
 wArray = Split(data, "&")
 If UBound(wArray) >= (num - 1) Then
 If InStr(wArray(num), "=") > 0 Then
 getData = Mid(wArray(num), InStr(wArray(num), "=") + 1)
 Else
 getData = wArray(num)
 End If
 Else
 getData = ""
 End If
End Function
<||
◎質問者からの返答

ご回答ありがとうございます!助かりました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ