请问题如何查一个TStrings中的单引号,为什么我用这样总是返回-1?(15分)

B

Boblee

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有一处TStrings,比如叫:myStrList,内容有四行,如:
aaaaa'akjfkldjsa
fkdjakljfdklsaj
b''bfjkdlsajfklds
cd'efdak8058432

现在我想返回含单引号的行号,我用:
myStrList.IndexOf('''')
为什么上面的语句返回的总是-1?查单引号要怎么查呢?


 
试试''
如果不行就用16进制表示法
 
''两个肯定不行,这表示空。
 
这样当然不行的。。

是找一个字符串。。

myStrList.IndexOf('cd''''efdak8058432')

才会返回4

 
IndexOf(const S: string) 中的指的是整个TStrings中的字符串,并不能返回字符中

含有某个字符。

比如叫:myStrList,内容有四行,如:
aaaaa'akjfkldjsa
fkdjakljfdklsaj
'
b''bfjkdlsajfklds
cd'efdak8058432

myStrList.IndexOf('''')
的返回值为:2
如果想找出字符串中的“ ' ”还是一个个字串来找吧
 
真失败,乱发帖,都是错的,连基本用法都忘记了,这次的是调试过的。
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
for i:=0 to memo1.Lines.Count-1 do
begin
s:=memo1.Lines;
if pos('''',s)>0 then
begin
showMessage(IntToStr(i+1));
Exit;
end;
end;
showMessage('no');
end;
 
myStrList.IndexOf 只能按行查找,你的 '''' 单引号不是某一个单独的行,所以不行
假如你要把所有含有单引号的行的行号都返回的话,这样:

var
i, p: Integer;
ResultList: TStringList
// 用一个列表保存结果
begin
ResultList := TStringList.Create;
for i := 0 to aStringList.Count - 1 do
begin
p := Pos('''', aStringList);
if p > 0 then // 在第 i 行找到
ResultList.Add(IntToStr(i))
// 将 i 放入结果列表
end;

ShowMessage('如下几行含有单引号:' + ResultList.Text);

ResultList.Free;
end;
 
谢谢各位,后来我知道是我对indeOf这个函数理解有误,它只能返回整个字符串都匹配的
而不是单个的。给分。大家最后都讲到点子上了。平分了。
 
多人接受答案了。
 
顶部