字符串比较,应该很简单的(50分)

  • 主题发起人 主题发起人 jobsxy
  • 开始时间 开始时间
J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
a='forname1'
b='forname1,forname1_a,forname1_b,forname2,forname2_a,forname_b'

需要判断a是否包含于字串b,用POS不行,因为必须得:
'forname1' IN 'forname1,forname1_a,forname1_b,forname2,forname2_a,forname_b'
为TRUE
'forname1' IN 'forname1_a,forname1_b,forname2,forname2_a,forname_b'
为FALSE

另一个问题:
我的一段代码
with table1 do
begin
.....
delete(....)
//我的这个delete是操作字符串的,可因为前面用了with..do,
//编译器识别为table1.delete过程,从而报错,应该如何书写呢?
.....
end;
 
1.给你一个函数,剩下自己写了,多看看书,好像都不是很难
procedure splitstring(s:string;delim:char;ts:tstrings);
{splits a compound string (s) delimited by (delim) into TStrings (ts)}
{example SplitString('Tony,Blair,Downing Street,London',',',ts) returns:
ts.count=4
ts[0]='Tony'
ts[1]='Blair'
ts[2]='Downing Street'
ts[3]='London'}


procedure SplitString(s:string;delim:char;ts:TStrings);
var
i:integer;
t:string;
begin
t:='';
for i:=1 to length(s) do
begin
if (s<>delim) then t:=t+s else
begin
ts.add(t);
t:='';
end;
end;
if t<>'' then ts.add(t);
end;
2.你这里delete和变成了table1.delete
要操作字符
function CopyFromChar(s:string;c:char;l:integer):string;
{copy l characters from string s starting at first incidence of c}
{example: Copyfromchar('Borland Delphi','a',3) = 'and'}

function CopyFromChar(s:string;c:char;l:integer):string;
var i:integer;
begin
i:=pos(c,s);
result:=copy(s,i,l);
end;
 
1.if b[pos(a,b)+length(a)] = ',' then
2.system.delete()
 
1.
var
i: Integer;
begin
Result := False;
i := pos (a, b);
if (i > 0) and ((i = Length (b) - Length(a)) or b[i + length(a)] = ',') then
Result := True;
end;

2.
System.Delete ()
 
第一个问题确实不难,但是很烦,我还得定义一个TStringList,然后逐一比较,完了还得Free。
总觉得既烦效率又低,只不知还有没有更好的办法或DELPHI现成的函数。
 
试没试我的答案?
 
呵呵,试了,谢谢zw84611

 
有更好办法!
 
抱歉、抱歉,这个回答有问题,刚刚jsxjd提醒我了,这样做最后一个匹配有问题,除非
结尾再加个逗号。

而且'xxxforname1_a,forname1_b,forname2,forname2_a,forname_b'这种情况也会出错!除非
确保子串是以fornam开头的。

正确的方法见:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1375041
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
606
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部