字符串替换问题!(50分)

  • 主题发起人 主题发起人 hying95
  • 开始时间 开始时间
H

hying95

Unregistered / Unconfirmed
GUEST, unregistred user!
const
cnXM: Array [0..10] of string=('AB','CD','EF','ABT','ABW','ABH','CDT','CDW','CDH','EFT','EFW');

bArr: Array [0..10] of string=('12','42','36','01','02','03','04','02',
'06','03','06');
{
memo1中的字符列表如下
ABT+EFT+CDT+CD+CDH+ABW+AB
ABT+EFT+CDT+EF+CDH+ABW+CD

}
procedure TForm1.Button1Click(Sender: TObject);
var
i,J,N: integer;
s: string;
s1: string;
begin
For j:=0 to memo1.Lines.Count-1 do
begin
s1:=memo1.Lines.Strings[j];
for i := 0 to High(cnXM) dO
begin
s:=cnXM;
N:=pos(s,s1);
if (N>0) and (length(s)>2) then
s1:=StringReplace(s1,s,bArr,[rfReplaceAll]);
if (N>0) and (length(s)=2) then//为何下面这段程序不处理?
begin
if (Copy(S1,N+2,1)='+') or ((Copy(S1,N+2,1)='')) then
s1:=StringReplace(s1,s,bArr,[rfReplaceAll]);
end;
//如果在此再加一个循环,可以替换完.
end;
memo2.Lines.Add(s1);
end;

end;

{
程序执行后还有四个没有被替换结果如下
01+03+04+CD+06+02+AB
01+03+04+EF+06+02+CD
搞不懂.
}
 
贴的时候贴错了,在I循环外再来一次循环可以替换外
为什么没人回答?
自己顶一下
 
下面这样可以完全替换,
procedure TForm1.Button1Click(Sender: TObject);
var
i,J,N: integer;
s: string;
s1: string;
begin
For j:=0 to memo1.Lines.Count-1 do
begin
s1:=memo1.Lines.Strings[j];
for i := 0 to High(cnXM) dO
begin
s:=cnXM;
N:=pos(s,s1);
if (N>0) and (length(s)>2) then
s1:=StringReplace(s1,s,bArr,[rfReplaceAll]);
end;
for i := 0 to High(cnXM) dO
begin
s:=cnXM;
N:=pos(s,s1);
if length(s)=2 then
if (pos(s+'+',s1)>0) or (RightStr(s1,2)=s) then
s1:=StringReplace(s1,s,bArr,[rfReplaceAll]);
end;
memo2.Lines.Add(s1);
end;

end;
能否就在第一个I循环里完成?
 
怎么没人回答啊!
 
字符串替换的这种问题还需要动手写吗?没有用过正则表达式吗????
几条语句就OK了。搞得几复杂。。。。。TRegExp 正则表达式类
爷爷的,大富翁有你这样的人,能不能冷清吗?????
 
看了楼上的回答,心里难受!
不懂才来问!
对于DELPHI,纯粹是爱好,买了几本书学,很多不懂,
如果你懂,还请聘教.
 
//用以下循环试试
for i := 0 to High(cnXM) dO
begin
s:=cnXM;
N:=pos(s,s1);
if length(s) = 2 then
begin
if RightStr(s1, 2) = s then s1 := LeftStr(s1, Length(s1) - 2) + bArr;
s1 := StringReplace(s1,s+'+',bArr+'+',[rfReplaceAll]);
end
else
s1 := StringReplace(s1,s,bArr,[rfReplaceAll]);
end;
 
to lasmai
多谢您了,这么晚了,还回答(这个贴多放一天,明天给你加分)
已经可以了.
上次也是您给了我回答.再次感谢.
如果都象那位cf83325恐怕没人敢问了,大富翁恐怕更冷清!
 
接受答案了.
 
后退
顶部