delphi 读取字符串问题

我读取了一个网页源文件,想从以下字符串中读取9月26日、9月26日、9月27日、9月28日。。。。10月2日我该如何读?字符串都存储在变量MyStr中。</script>... 我读取了一个网页源文件,想从以下字符串中读取9月26日、9月26日、9月27日、9月28日。。。。10月2日 我该如何读?
字符串都存储在变量MyStr中。
</script>
</td></tr></table>
</table>
<table width="800" bgcolor="#dddddd" border="0" cellpadding="0" cellspacing="0">
<tr height="20" valign="middle">
<td background="/gfx/tsub.gif" class="dt"> </td>
<td background="/gfx/tsub.gif" class="dt">9月26日</td>
<td background="/gfx/tsub.gif" class="dt">9月27日</td>
<td background="/gfx/tsub.gif" class="dt">9月28日</td>
<td background="/gfx/tsub.gif" class="dt">9月29日</td>
<td background="/gfx/tsub.gif" class="dt">9月30日</td>
<td background="/gfx/tsub.gif" class="dt">10月1日</td>
<td background="/gfx/tsub.gif" class="dt">10月2日</td>
我想把每个日期都放到一个字符串变量中,后面好显示出来。
网页代码上还有 以下代码 和上面的是一样的 但我不需要。
</tr>
<tr height="20" valign="middle">
<td background="/gfx/tsup.gif" class="dt"> </td>
<td background="/gfx/tsup.gif" class="dt">星期一</td>
<td background="/gfx/tsup.gif" class="dt">星期二</td>
<td background="/gfx/tsup.gif" class="dt">星期三</td>
<td background="/gfx/tsup.gif" class="dt">星期四</td>
<td background="/gfx/tsup.gif" class="dt">星期五</td>
<td background="/gfx/tsup.gif" class="dt">星期六</td>
<td background="/gfx/tsup.gif" class="dt">星期日</td>
展开
 我来答
qianlu9999
2011-09-27 · TA获得超过183个赞
知道答主
回答量:68
采纳率:0%
帮助的人:59.4万
展开全部

unit Unit4;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Memo1: TMemo;

    Memo2: TMemo;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

  MyStr, tStr:String;

begin

  MyStr := Memo1.Text;     //我把你要求的字符串存在Memo1.Text中

  Memo2.Text := '';

  Delete(MyStr, 1, Pos('class="dt">', MyStr));

  Delete(MyStr, 1, Pos('</td>', MyStr));

  while Pos('class="dt">', MyStr) <> 0 do

  begin

    Delete(MyStr, 1, Pos('class="dt">', MyStr));

    Delete(MyStr, 1, Pos('>', MyStr));

    tStr := Copy(MyStr, 1, Pos('</td>', MyStr)-1);

    Memo2.Lines.Add(tStr);

  end;

end;

end.

追问
这个代码我试了下,所有年月日都是一次显示,对吧,我想把每个年月日分别存到一个字符串数组里面去。好做后期的显示。是不是要逐行读取啊。
luckyso111
2011-09-27 · TA获得超过208个赞
知道大有可为答主
回答量:261
采纳率:0%
帮助的人:231万
展开全部
这分我也来抢... 大体代码和9999一样,但我提供一个函数...
用法:
1: 先把所有文字读入Memo1
2: for循环中 GetCStr(memo1.lines.strings[i],'<td background="/gfx/tsub.gif" class="dt">','</td>
')

function GetCStr(const Strsource, StrBegin, StrEnd: string): string;
var
in_star, in_end: integer;
strtmp: string;
begin

if StrBegin = '' then in_star := 1 else
begin
// if AnsiPos(UpperCase(strbegin), Strsource)
in_star := AnsiPos(strbegin, Strsource) + length(strbegin);

end;
strtmp := copy(Strsource, in_star, length(Strsource));
if StrEnd = '' then begin Result := strtmp; Exit; end else in_end := AnsiPos(strend, strtmp);
result := copy(Strsource, in_star, in_star + in_end - in_star - 1);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
japhe
2011-09-27 · TA获得超过369个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:210万
展开全部
用正则表达式获取

<td background="/gfx/tsub.gif" class="dt">(\d+月\d+日)</td>
Match[1]即为你要的日期
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tooper2
2011-09-27 · TA获得超过1019个赞
知道小有建树答主
回答量:1137
采纳率:66%
帮助的人:1027万
展开全部
一行一行读,每一行读取后tirm掉开头的空格,然后如果是以<td background="/gfx/tsub.gif" class="dt">开头的,则再trim掉开头的<td background="/gfx/tsub.gif" class="dt">和结尾的</td>,如果不为空就记录下来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式