• 締切済み

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>タグの位置を検索すればよいでしょうか?

みんなの回答

noname#140971
noname#140971
回答No.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)
回答No.1

ホントにやるとしたら、パースしないといけません。しかしまあそうなるときっと手に負えないでしょうから 1.まず1行とりだす。 2.全部大文字または小文字に変換する 3.<TD をさがしてその次の > までを取り出す 4.取り出した文字列の中からスペースをとりのぞく 5.WIDTH= という文字列をさがし、その後ろを取り出す という手順ですかねぇ。