有一个文本:
类似这样
AAAA 123 321
BBBB 123 321
CCCC 123 321
DDDD 123 321
AAAA 456 321
这个文本格式是这样 但是很长
我用POS(String,'AAAA')返回的是第一个AAAA的位置
如何返回第二个AAAA
第三个AAAA
甚至更多个 AAAA的位置呢?
求高人解答
类似这样
AAAA 123 321
BBBB 123 321
CCCC 123 321
DDDD 123 321
AAAA 456 321
这个文本格式是这样 但是很长
我用POS(String,'AAAA')返回的是第一个AAAA的位置
如何返回第二个AAAA
第三个AAAA
甚至更多个 AAAA的位置呢?
求高人解答
解决方案 »
- 动态改变IP地址
- 函数反回一个自定义的数据数组类型时出错 invalid point
- 这样该选什么数据库好呢?拜谢!!!
- 如何实现在菜单的缩放?高分送。
- 关于ADO的,把EXCEL中的数据导入到SQL SERVER2000中.......
- Com服务器程序无法启动??
- 怎么在delphi程序中播放mp3格式的音乐??有这样的控件吗??急,在线等待
- Delphi有没有象C++的this指针?
- 那位高手大哥知道,如何将delphi与sql server数据库进行连接,请详细说明?
- 做过无盘工作站的高手请就来!!!急呀!!
- delphi ctrl+空格问题
- Delphi调用Https Webservice的问题
var
n, iLen, iPos: Integer;
sTemp: string;
begin
if iIndex <= 0 then
begin
Result := Pos(Substr, S);
Exit;
end; n := 0;
sTemp := S;
Result := 0;
iLen := Length(Substr);
while n < iIndex do
begin
iPos := Pos(Substr, sTemp);
if iPos > 0 then
begin
sTemp := Copy(sTemp, iPos + iLen, Length(sTemp) - iPos - iLen + 1);
if n = 0 then
Result := Result + iPos
else
Result := Result + iPos + iLen - 1;
end
else
begin
Result := 0;
Break;
end;
Inc(n);
end;
end;procedure TForm1.Button8Click(Sender: TObject);
begin
Edit1.Text := IntToStr(PosN('AAA', Memo1.Text, SpinEdit1.Value));
end;
if iIndex < 2 then
begin
Result := Pos(Substr, S);
Exit;
end;
var
S , SubStr : String;
n : integer;
begin
S := 'dAAABBCCDDAAAFFBB';
SubStr := 'AA';
n := 1;
while True do begin
n := PosEx(SubStr , S , n);
if n=0 then Break;
//第一种用法
n := n + Length(SubStr);
//第2种用法
//n := n + 1
ShowMessage(IntToStr(n));
end;
end;
1.使用PosEx来搜索,这个可以指定开始搜索的位置。需要uses StrUtils2.找到第一个后,把第一个替换成其它字符,再pos。