To BlueTrees(蜗牛) ,你的实现版本:
1、语法错误太多
2、没有考虑括内嵌括号的情况
3、效率太慢:知道为什么吗?
我的实现
function RemoveComment(Str: string): string;
var
i, Len, Parentheses, Count: Integer;
begin
Result := '';
if Str = '' then Exit;
Count := 0;
Parentheses := 0;
Len := Length(Str);
SetLength(Result, Len);
for i := 1 to Len do
begin
if Str[i] = '(' then
Inc(Parentheses)
else if Str[i] = ')' then
Dec(Parentheses)
else if Parentheses = 0 then
begin
Inc(Count);
Result[Count] := Str[i];
end;
end;
SetLength(Result, Count);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
StartIndex, EndIndex: Integer;
begin
s := 'asafsdf(asdfgg)trqwrw(asdfsdf)';
repeat
StartIndex := Pos('(',s);
if StartIndex > 0 then
begin
EndIndex := Pos(')',Copy(s,StartIndex,Length(s)-StartIndex+1));
if EndIndex >0 then delete(s,StartIndex,EndIndex);
end;
until (StartIndex <= 0);
ShowMessage(s);
end;
function TForm1.Delbracket(str: String): String;
var
A:TStringList;
i:integer;
begin
Result :='';
A:=TStringList.Create;
Str:=StringReplace(str,'(',#13#10+'(',[rfReplaceAll]);
Str:=StringReplace(str,')',')'+#13#10,[rfReplaceAll]);
a.Text := str ;
for i:=0 to a.Count -1 do
if (Copy(A[i],0,1)<>'(')and(Pos(')',A[i])<=0) then
Result := Result + a[i];
a.Free;
end;
function tranc(value:string):string
var
state:integer;
idx:integer;
begin
state=0;
Result:='';
for idx:=0 to legnth(value)-1 do
begin
if(state=0)then
begin
if(value[idx]<>'(') then
Result:=Result+value[idx]
else
state=1;
end else if(state=1)then
begin
if(value[idx]=')')then
state=0;
end;
end;
end;