大家帮看看,谢.请问,如何提取以下字符串的URL和文字?如:<a href="ddd.htm">测试</a>如何取出ddd.htm,测试 这两个字符?谢了.
解决方案 »
- 请问TApplication.OnMessage、WndProc和TApplicationEvents的不同?
- 提一个非常简单的问题
- 為什么在程序運行時數據集會打開兩次﹖﹖
- 为什么我在数据模板里使用ado连接oracle,并在form2中的dbgrid里绑定,但运行时无数据,active己为true
- 快捷键怎么做?
- 请不要嫌烦,俺是DELPHI菜鸟。请问如何对主从表进行操作?
- 看看这代码,为什么数值放不上去
- 关于IOCP的一些疑惑
- 为什么我的电脑不能下载FTP的文件???
- 怎样使用DataSetField建立主从关系?
- 如何将秒数转换为时分秒
- 为什么activeform的在本地的机器能web访问,远程就不行
var
str, str1, str2: string;
begin
str := '<a href="ddd.htm">测试</a>';
str1 := copy(str, Pos('="', str)+2, Pos('">', str)-Pos('="', str)-2);
//showMessage(str1);
str2 := copy(str, Pos('">', str)+2, Pos('</a>', str)-Pos('">', str)-2);
//showMessage(str2);
end;
s:string;
TS:Tstrings;
begin
s:='<a href="ddd.htm">测试</a>';
TS:=TStringList.Create;
TS.Delimiter:='"';
TS.DelimitedText:=s;
ShowMessage(TS.Strings[2]);
end;
假设你的字符串赋给变量sTemp
point_href:=pos('href="',sTemp);
delete(sTemp,1,point_href-1+6);//6为href="的长度
url:=copy(sTemp,1,pos('"',sTemp)-1);
showmessage(url)
至于测试,你只有一个定位终止的条件(</a>前),没有定位开始的条件,我觉得还是不能做到
var
str: string;
i: integer;
leftChr: char;
stat: string;
rstr: string;
begin
leftChr := #0;
rstr := '';
str := '<A class=black onmousewheel=keep(); href="music/1.html" target=_blank><Font color=red>测试</font></a>';
for i:=1 to Length(str) do
begin
if (str[i]='<') or (str[i]='>') then
begin
if rstr<>'' then break;
leftChr := str[i];
end;
if (str[i]<>'<') and (str[i]<>'>') then
if leftChr='>' then rstr := rstr + str[i];
end;
showMessage(rstr);
end;这个可以取出'测试',要取出music/1.html的话,如果是很规范的,在两个双引号之间,就用 Ciny_Cou(我一路狂奔.. 渴望在擁擠匆忙的人群裏找到.. 壹個和我)的方法:
var
s:string;
TS:Tstrings;
begin
s:='<A class=black onmousewheel=keep(); href="music/1.html" target=_blank><Font color=red>测试</font></a>';
TS:=TStringList.Create;
TS.Delimiter:='"';
TS.DelimitedText:=s;
ShowMessage(TS.Strings[2]);
end;
假设你的字符串赋给变量sTemp
point_href:=pos('href="',sTemp);
delete(sTemp,1,point_href-1+6);//6为href="的长度
url:=copy(sTemp,1,pos('"',sTemp)-1);
showmessage(url)
至于测试,你只有一个定位终止的条件(</a>前),没有定位开始的条件,我觉得还是不能做到
从服务器获取登录结果信息:结构体:(Client)
type UserLoginResult = record
lResult: string;
lSort: integer;
lPackType:string;
end;
分解登录结果:
lString := csUserLogin.Socket.ReceiveText;
with RUserLoginResult do
begin
lResult := copy(lString, 1, pos('|', lString) - 1);
lString := copy(lString, pos('|', lString) + 1, length(lString));
if strtoint(lResult) = 1 then
lSort := strtoint(copy(lString,1,pos('|',lString)-1));
end;
<a onclick=open(); href="http://www.baidu.com/music">测试2</a>
<a href=http://www.china.com/music/index.asp class=bb>测试3</a>
<a HREF=musiclist.htm target=_blank><font color=red>测试4</font></a>
至于你说的HREF和href,可以把Pos函数改为不区分大小写的如果有需要,我可以帮你完成,,不过相信有了这些提示,你自己应该可以写完的了。
var
str: string;
i: integer;
leftChr: char;
rstr1, rstr2: string;
function SPos(t, s: string): integer;
begin
Result := Pos(AnsiLowerCase(t), AnsiLowerCase(s));
end;
begin
leftChr := #0;
rstr1 := '';
str := '<A class=black onmousewheel=keep(); href="music/1.html" target=_blank><Font color=red>测试</font></a>'; rstr2 := Copy(str, SPos('href=', str)+5, Length(str));
rstr2 := Copy(rstr2, 1, SPos(' ', rstr2)-1);
rstr2 := Trim(StringReplace(rstr2, '"', '', [rfReplaceAll]));
showMessage(rstr2); for i:=1 to Length(str) do
begin
if (str[i]='<') or (str[i]='>') then
begin
if rstr1<>'' then break;
leftChr := str[i];
end;
if (str[i]<>'<') and (str[i]<>'>') then
if leftChr='>' then rstr1 := rstr1 + str[i];
end;
showMessage(rstr1);end;
procedure TForm1.Button3Click(Sender: TObject);
procedure strProc(str: string);
var
i: integer;
leftChr: char;
rstr1, rstr2: string;
function SPos(t, s: string): integer;
begin
Result := Pos(AnsiLowerCase(t), AnsiLowerCase(s));
end;
begin
leftChr := #0;
rstr1 := '';
rstr2 := Copy(str, SPos('href=', str)+5, Length(str));
if SPos(' ', rstr2)=0 then
rstr2 := Copy(rstr2, 1, SPos('>', rstr2)-1)
else
rstr2 := Copy(rstr2, 1, SPos(' ', rstr2)-1);
rstr2 := Trim(StringReplace(rstr2, '"', '', [rfReplaceAll]));
showMessage(rstr2); for i:=1 to Length(str) do
begin
if (str[i]='<') or (str[i]='>') then
begin
if rstr1<>'' then break;
leftChr := str[i];
end;
if (str[i]<>'<') and (str[i]<>'>') then
if leftChr='>' then rstr1 := rstr1 + str[i];
end;
showMessage(rstr1);
end;
begin
strProc('<a href="music/openfile.html">测试1</a>');
strProc('<a onclick=open(); href="http://www.baidu.com/music">测试2</a>');
strProc('<a href=http://www.china.com/music/index.asp class=bb>测试3</a>');
strProc('<a HREF=musiclist.htm target=_blank><font color=red>测试4</font></a>');
end;