如何过滤字符串?(100分)

  • 主题发起人 主题发起人 djw
  • 开始时间 开始时间
D

djw

Unregistered / Unconfirmed
GUEST, unregistred user!
使用memo1.Lines.SaveToFile('c:/memo.txt');
保存一个TXT文件(memo的文本是每行一条),
要怎么过滤重复的内容,如:
第一行:http://www.yahoo.com
第二行:http://www.263.net
第三行:http://www.yahoo.com
请教,如何过滤掉重复的内容。

初学Delphi,请各位高手赐教。
 
var
I: Integer;
begin
with Memo1 do
for I := Lines.Count - 1 downto 0 do
if Lines.IndexOf(Lines) <> I then
Lines.Delete(I);
end;
 
croco:谢谢你,我明白了,但是碰上这种情况该怎么办:
第一行:http://www.yahoo.com
第二行:www.yahoo.com
第三行:http://yahoo.com
是否应该过滤掉http://和www,再过滤重复的内容?
********
其实你已经回答了我的问题,但碰上一位好老师总忍不住多嘴,
这个问题您若不回答,明天我也会把一百分给您加上。

 
我认为这个处理是不恰当的。在很多情况下,host.domain.com和domain.com
的地址并不相同,所以,不应该过滤www。
 
接受答案了.
 
碰上这种情况该怎么办:>>
过滤掉http://的解决办法:

function DeHTTP(S: String): String;
begin
Result := Copy(S, LastDelimiter('http://', S) + 1, MaxInt);
end;

function MyURLEqual(URL1, URL2: String): Boolean;
begin
Result := DeHTTP(Lowercase(URL1)) = DeHTTP(Lowercase(URL2));
end;

function MyIndexOf(ss: TStrings; I: Integer): Integer;
begin
for Result := 0 to ss.Count - 1 do
if MyURLEqual(ss[Result], ss) then Exit;
Result := -1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
with Memo1 do
for I := Lines.Count - 1 downto 0 do
if MyIndexOf(Lines, I) <> I then
Lines.Delete(I);
end;


 
真的很感谢你Croco。
 
后退
顶部