50分,在TStringList类型中如何快速定位其中某个元素的位置(50分)

  • 主题发起人 主题发起人 kingkong
  • 开始时间 开始时间
K

kingkong

Unregistered / Unconfirmed
GUEST, unregistred user!
50分,在TStringList类型中如何快速定位其中某个元素的位置,
有没有比下例更好的方法:

//测试"c"是其中第几个元素,返回值是3
var
Test:TStringList;
I:integer;
begin
Test:=TStringList.Create;
Test.Add('a');
Test.Add('b');
Test.Add('c');
Test.Add('d');
Test.Add('e');
for I:=0 to Test.Count-1 do
begin
if Test='c' then
begin
showmessage(InttoStr(I+1));
end;
end;
 
如果,你的这个字符串列表没有任何规律的话,好像只能用你这种方法遍历,如果字符串
有规律,比如:从前到后是按字母顺序排列的,那么可以有二分法,大致的意思是:先在
比较中间的某一个,如果小于,则在前面一半中查找,后面一半就不用再去管了......
 
showmessage(inttostr(test.IndexOf('c')+1));
 
好像TStringList有个find方法啊,不过必须先对TStringList进行排序
 
我觉得象TStringList这种类都已经封装的很好了,直接使用其中的方法就可以了呀
看了一下帮助,看到indexof
Good luck
 
我试了showmessage(inttostr(test.IndexOf('c')+1))和
StringList的find都正确,但相对来说liuyan的方法更好些
谢谢大家,现在开始分赃....
 
为什么我的indexof('C')总是返回落到 -1 , 没有找到?????
 
后退
顶部