delphi有没有能够取出子串在父串中第1、2、3、n次出现的位置的函数?
3个回答
展开全部
{取某字符串出现的位置(返回str字符串中含有str1从a开始第B次出现的位置)}
FUNCTION FStr_Instr(str,str1: string;a,b: integer): integer;
var
i,j: integer;
num: integer ;
str_tmp: string ;
begin
Result := 0 ;
// str_tmp := str ;
str_tmp := copy(str,a,length(str)) ;
// num := FStr_Num(str,str1) ;
num := FStr_Num(str_tmp,str1) ;
if length(str) < a then exit ;
if num < b then exit ;
for i := 1 to b do
begin
j := pos(str1,str_tmp) ;
if j > 0 then
begin
str_tmp := copy(str_tmp,j+length(str1),length(str_tmp)) ;
if i <> b then
Result := Result + length(str1) - 1 + j
else
Result := Result + j + a - 1 ;
// Result := Result + j - a + 1 ;
end
else
exit;
end;
end;
FUNCTION FStr_Instr(str,str1: string;a,b: integer): integer;
var
i,j: integer;
num: integer ;
str_tmp: string ;
begin
Result := 0 ;
// str_tmp := str ;
str_tmp := copy(str,a,length(str)) ;
// num := FStr_Num(str,str1) ;
num := FStr_Num(str_tmp,str1) ;
if length(str) < a then exit ;
if num < b then exit ;
for i := 1 to b do
begin
j := pos(str1,str_tmp) ;
if j > 0 then
begin
str_tmp := copy(str_tmp,j+length(str1),length(str_tmp)) ;
if i <> b then
Result := Result + length(str1) - 1 + j
else
Result := Result + j + a - 1 ;
// Result := Result + j - a + 1 ;
end
else
exit;
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询