- 締切済み
VB6.0 特定の文字列の取得方法
環境:WINDOWS 2000 Visual Basic 6.0 (1)htmlファイルをInbutB関数で読み込み、変数AAAに代入 (2)Instr関数を使用して Instr(htmlが格納された変数,"<td")などと特定の文字位置を検索 (3)mid関数などで特定の文字位置から文字位置を抜き出す 例:mid(AAA,<TD>開始位置A,文字列開始位置B) 上記のようなことをやりたいと考えています。 今回困っていることは<TD>開始タグの文字位置の検索です。 <td valign="top" align="right" width="600"> width="600"のtd開始タグの位置を検索したいと思っています。 ファイルは複数あり、<td と width="600" の間に入っているものも異なり、またシンプルに<td width="600>というパターンも存在します。 こういった場合、どの用に特定の条件を満たした<TD>タグの位置を検索すればよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
Instr 関数と Mid$ 関数で文字列を抜き出すルーチンは多少複雑です。 ? CutStr(CutStr("<td valign='top' align='right' width='600'>", "td", 2), " align",1) valign='top' このよう、[td] と [ align] とに囲まれた [ valign='top'] を抜き出すには、 1、「td] の右側を抜き出し、 2、[ align]の左側を抜き出す という手順が一番簡単。 ? CutStr("<td valign='top' align='right' width='600'>", "td", 2) valign='top' align='right' width='600'> ? CutStr("valign='top' align='right' width='600'>", " align",1) valign='top' 冒頭は、この2ステップを1文にしただけです。 Public Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim I As Integer Dim J As Integer Dim K As Integer Dim L As Integer Text = Text & Separator L = Len(Separator) - 1 For I = 1 To N J = K + 1 K = InStr(J, Text, Separator, vbTextCompare) + L Next I If K > J Then CutStr = Mid$(Text, J, K - J - L) End If End Function さて、この CutStr は MS-DOS 時代のそれです。 Split 関数を利用すれば、3倍速で動作する CutStr 関数を書くことが出来ます。 Instr関数、Mid$関数での文字列の処理は、Split関数での処理に置きかえれるという例です。 参考になれば幸いです。 Private Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & Text, Separator, , 0) CutStr = strDatas(N * Abs(N <= UBound(strDatas)))) End Function
- NNori
- ベストアンサー率22% (377/1669)
ホントにやるとしたら、パースしないといけません。しかしまあそうなるときっと手に負えないでしょうから 1.まず1行とりだす。 2.全部大文字または小文字に変換する 3.<TD をさがしてその次の > までを取り出す 4.取り出した文字列の中からスペースをとりのぞく 5.WIDTH= という文字列をさがし、その後ろを取り出す という手順ですかねぇ。