- ベストアンサー
文字列チェック!ある文字からある文字までの値を取得するには?
"http://dailynews.yahoo.co.jp/fc/local/tokyo_metropolitan_government/" という文字列があったとして"/"の右から3番目から4番目の間の文字列(この場合 fc)を取得するにはどうすればいいんでしょうか?教えて下さい
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Dim j, k As String Dim a, b As Long j = "http://dailynews.yahoo.co.jp/fc/local/tokyo_metropolitan_government/" a = InStr(InStr(InStr(1, j, "/") + 1, j, "/") + 1, j, "/") b = InStr(InStr(InStr(InStr(1, j, "/") + 1, j, "/") + 1, j, "/") + 1, j, "/") k = Mid(j, a + 1, b - a - 1) これでkに"fc"が入ります。Instrは文字列から特定の文字の位置を求める関数です。 「3番目から4番目」の3や4が変数である場合は、 k = Mid(j, x, 1) などとして xを1から len(j)までforで回し、"/"が何字目に出てくるかを記録するといいと思います。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
#3 です。 すみません、質問読み違えました。(^^; × .Pattern = ".+/(.*)/.+/.+/.+/$" ↓ .Pattern = ".+/.+/(.+)/.+/.+/$" にしてください。 なお、もっとはっきりしているなら、 .Pattern = ".+\.jp/([^/]+)/.*" でもよいわけですね。
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() s = "http://dailynews.yahoo.co.jp/fc/local/tokyo_metropolitan_government/" p = Split(s, "/") If UBound(p) > 3 Then n = UBound(p) - 3 MsgBox p(n) Else MsgBox "該当なし" End If End Sub 後方から4番目がないことがありえるときは、Else節文を入れてください。 fcの後の)をつけるならP(n) & ”)”としてください。
お礼
あぁ、やっぱりsplit関数が便利ですね。 ありがとうございまっする。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 まあ、私だったら、こうします。その後にも文字切り出しに使えますからね。通常は、左から数えるかと思いますが、今回は、ご質問どおり、右から数えています。 Sub regTest() Dim objRe As Object Dim Matches As Object Const myUrl As String = "http://dailynews.yahoo.co.jp/fc/local/tokyo_metropolitan_government/" Set objRe = CreateObject("VBScript.RegExp") With objRe .Pattern = ".+/(.*)/.+/.+/.+/$" .Global = False If .Test(myUrl) Then Debug.Print .Replace(myUrl, "$1") End If End With Set objRe = Nothing End Sub
お礼
なるほど~。.patternの値がきれいですね。
- anmochi
- ベストアンサー率65% (1332/2045)
素直にSplitを使うとどうだろう。 urlmember = Split(http://dailynews.yahoo.co.jp/fc/local/ty.../", "/") For i = 0 To UBound(urlmember) Response.Write i & " = " & urlmember(i) & "<br> Next これは、Splitで「/」を分解した後、それぞれのアイテムを表示するサンプルだ。参考にされたい。
お礼
するする!ありがとう!
お礼
あざーっす。 一番はやくおしえていただいたので20ポイントあげまっす