如何取出字符串中"("和")"之间的字符?(100分)

  • 主题发起人 主题发起人 chemer
  • 开始时间 开始时间
C

chemer

Unregistered / Unconfirmed
GUEST, unregistred user!
如何取出字符串中"("和")"之间的字符?

我在edit中输入字符串,然后再form.caption中输出,我想取出edit中"("和")"之间的字符,
并且在edit中删除这些字符(就像移动那样),最后将"("和")"之间的字符赋给另一个string,
在form.caption,没有取出的字符。

左括号和右括号始终不显示!
 
我来写个函数吧

function GetString (aString :String) : string;
var starS,ends : integer;
begin
Result := '';
If (Pos('(',aString)=0) or (pos(')')=0 ) Then Exit;
Stars := Pos('(',aString);
ends := pos(')',aString );
Result := copy(aString,Stars+1,Ends-stars);
end;
 
谢谢,If (Pos('(',aString)=0) or (pos(')')=0 ) Then Exit;一行有问题
我在
procedure TForm1.Edit1Change(Sender: TObject);
begin
caption:=getstring(edit1.text);
end;
使用无效
 
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then Exit这样,我没试
一会我去试一下
 
这样可以吗??
procedure TForm1.Edit1Change(Sender: TObject);
var
TempString:string;
begin
Tempstring:=edit1.text;
caption:=getstring(Tempstring);
end;
 
function GetString (aString :String) : string;
var starS,ends : integer;
begin
Result := '';
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then Exit;
Stars := Pos('(',aString);
ends := pos(')',aString );
Result := copy(aString,Stars+1,Ends-stars-1);
end;

测试通过了
 
ok,thanks,那源字符串取出了()中的 其余的部分怎样得到呢?
 
其实,你把“(”以前的,和")"以后的字符返回不就好了吗?
 
我试过了:哪里有问题?

function GetStringB (aString :String) : string;
var star0,starS,ends,end0 : integer;
begin
Result := '';
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then Exit;
star0:=0;
Stars := Pos('(',aString);
ends := pos(')',aString );
end0:=length(astring);
Result := copy(aString,star0,Stars+1)+copy(aString,Ends-stars-1,end0);
end;
 
完颜康帮帮我
 
function GetStringB (aString :String) : string;
var star0,starS,ends,end0 : integer;
begin
Result := '';
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then Exit;
star0:=0;
Stars := Pos('(',aString);
ends := pos(')',aString );
end0:=length(astring);
Result := copy(aString,star0,Stars-1)+copy(aString,ends+1,end0-ends);
end;
 
能否让它动态执行呢?

edit2.text:=getstring(edit1.text);
edit3.text:=getstring2(edit1.text);

必须要等到输入完括号才能显示。

 
什么意思啊?
你可以在EditOnExit事件里写代码啊
 
我的意思是,输入一个astring字符就输出一个string字符,是动态的。
现在的情况是必须要等到")"输入完毕后,各个文本框中才显示提取出来的字符串
 
也就是说我要考虑,若没有输入括号,也要照常输出字符串。
 
我已经解决了:
function GetString2 (aString :String) : string;
var star0,starS,ends,end0 : integer;
begin
Result := '';
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then begin
result:=astring;
Exit;
end;
star0:=0;
Stars := Pos('(',aString);
ends := pos(')',aString );
end0:=length(astring);
Result := copy(aString,star0,Stars-1)+copy(astring,Ends+1,end0-ends);
end;

谢谢完颜康
 
没有括号就输出原字符串?

function GetString (aString :String) : string;
var starS,ends : integer;
begin
Result := aString;
If (Pos('(',aString)=0) or (pos(')',aString)=0 ) Then Exit;
Stars := Pos('(',aString);
ends := pos(')',aString );
Result := copy(aString,Stars+1,Ends-stars-1);
end;
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
839
DelphiTeacher的专栏
D
D
回复
0
查看
844
DelphiTeacher的专栏
D
D
回复
0
查看
679
DelphiTeacher的专栏
D
后退
顶部