怎么找到对应的括号?

blackyu 2004-09-06 11:43:43
如:((a=1 and b=2) and c=1) or (d=1 and e=1) 怎么把a=1 and b=2,(a=1 and b=2) and c=1,d=1 and e=1。写到str1,str2,str3中去。最好写成一个通用的函数。
...全文
297 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2004-09-06
  • 打赏
  • 举报
回复
function Get(var S:string;R:Tstrings):boolean; //
var TmpStr:string;
i,cnt:integer;
begin
result:=true;
R.Clear;
while s<>'' do
begin
TmpStr:='';
cnt:=0;
repeat
if s[1]='(' then cnt:=cnt+1;
delete(s,1,1);
if s='' then
begin
result:=true;
exit;
end;
until s[1]='(';

while true do
begin
if s='' then
begin
result:=false;
exit;
end;
TmpStr:=TmpStr+s[1];
if s[1]=')' then
begin
cnt:=cnt-1;
if cnt<0 then
begin
result:=true;
break;
end;
end;
delete(s,1,1);
end;
R.Add(TmpStr);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:='((a=1 and b=2) and c=1) or (d=1 and e=1)';
get(s,memo1.Lines);
end;
blackyu 2004-09-06
  • 打赏
  • 举报
回复
具体怎么做啊?
yuanscar 2004-09-06
  • 打赏
  • 举报
回复
做个堆栈不就行了吗?看看算法好了

16,748

社区成员

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

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