在一串字符中取值后加以处理

y9165102 2009-04-16 06:49:11
<$MD5>vs<$MD5>vsvsv<$/MD5>vsv<$/MD5>
语法是<$MD5>?</$MD5>
取中间文号的值,但是上面的语句是中间还有一个<$MD5>vsvsv<$/MD5>需要转换的.

像这一种算法。我应该怎么实现呢?
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonelyriver 2009-04-17
  • 打赏
  • 举报
回复
丿+ learning + mark
y9165102 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
修正一下

Delphi(Pascal) code
var
str,sstr,estr:string;
s,e:integer;
begin
str := 'fgjdguyr <$MD5>vs <$MD5>vsvsv </$MD5>vsv </$MD5>uyiryir';
estr := '</$MD5>';
sstr := '<$MD5>';
e := LastDelimiter(estr,str)-Length(estr);
s := Pos(sstr,str)+Length(sstr);
str := Copy(str,s,e-s);
ShowMessage(str);
end;
[/Quote]

谢谢回答。但是没有达到我的要求。我想让我写的程序像DELPHI开发工具一样,能够组合的转换里面的值.
就像这样
inttostr(strtoint('1'));
程序会找最中间的值
jerry8 2009-04-17
  • 打赏
  • 举报
回复
用TStringlist 的分割标记
bdmh 2009-04-17
  • 打赏
  • 举报
回复
修正一下

var
str,sstr,estr:string;
s,e:integer;
begin
str := 'fgjdguyr <$MD5>vs <$MD5>vsvsv </$MD5>vsv </$MD5>uyiryir';
estr := '</$MD5>';
sstr := '<$MD5>';
e := LastDelimiter(estr,str)-Length(estr);
s := Pos(sstr,str)+Length(sstr);
str := Copy(str,s,e-s);
ShowMessage(str);
end;


bdmh 2009-04-17
  • 打赏
  • 举报
回复

var
str,sstr,estr:string;
s,e:integer;
begin
str := 'fgjdguyr <$MD5>vs <$MD5>vsvsv </$MD5>vsv </$MD5>uyiryir';
estr := '</$MD5>';
sstr := '<$MD5>';
e := LastDelimiter(estr,str)-+Length(estr);
s := Pos(sstr,str)+Length(sstr);
str := Copy(str,s,e-s);
ShowMessage(str);
end;
jadeluo 2009-04-17
  • 打赏
  • 举报
回复

function GetSubValue(S: string): String;
const
RexTop = '<$MD5>';
RexBottom = '</$MD5>';
var
i, j : Integer;
iCount: Integer;
begin
Result := '';
i := Pos(RexTop, S);
if i > 0 then
begin
inc (i, Length(RexTop));
iCount := 1;
for j := i to Length(S) - Length(RexBottom) do
begin
if Copy(S, j, Length(RexTop)) = RexTop then
inc(iCount)
else begin
if Copy(S, j, Length(RexBottom)) = RexBottom then
begin
dec(iCount);
if iCount = 0 then
begin
Result := Copy(S, i, j - i);
break;
end;
end;
end;
end;
end;
end;

......
ShowMessage (GetSubValue('fgjdguyr <$MD5>vs <$MD5>vsvsv </$MD5>vsv </$MD5>uyiryir'));
......
y9165102 2009-04-17
  • 打赏
  • 举报
回复
晕死。说得我自己都乱套了.其实就是想在一串字符中里面找一个首尾相对的值。然后取出来.如下面的

-------------------------------------------
fgjdguyr<$MD5>vs<$MD5>vsvsv</$MD5>vsv</$MD5>uyiryir
-------------------------------------------

我要从上面的一串字符中取出
vs<$MD5>vsvsv</$MD5>vsv
(首)<$MD5>中间值</$MD5>(尾)
中间值就是上面的vs<$MD5>vsvsv</$MD5>vsv,可是我写的程序不能写现这一点..他每一次都只是将vsvsv</$MD5>值取出,而不将最后的一个<$/MD5>


代码

Delete(memostr,1,Pos(Rextop,memostr));
liststr.Add(Copy(memostr,length(Rextop),Pos(Rexup,memostr)-length(Rexup)+1));

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧