dポイントプレゼントキャンペーン実施中!

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

A 回答 (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
    • good
    • 0

ホントにやるとしたら、パースしないといけません。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!