delphi 读取字符串问题
字符串都存储在变量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> 展开
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.
这个代码我试了下,所有年月日都是一次显示,对吧,我想把每个年月日分别存到一个字符串数组里面去。好做后期的显示。是不是要逐行读取啊。
用法:
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;
<td background="/gfx/tsub.gif" class="dt">(\d+月\d+日)</td>
Match[1]即为你要的日期