String 查找字符串中最后出现的字符
是否存在任何RTL Delphi函数来确定字符串中最后一个字符出现的位置?尝试作为SysUtils单元一部分的函数。RRUZ回答了实际问题(他给了您一个RTL函数) 尽管如此,我还是忍不住要给出一个简单的代码片段来满足您的需求:String 查找字符串中最后出现的字符,string,delphi,delphi-2007,String,Delphi,Delphi 2007,是否存在任何RTL Delphi函数来确定字符串中最后一个字符出现的位置?尝试作为SysUtils单元一部分的函数。RRUZ回答了实际问题(他给了您一个RTL函数) 尽管如此,我还是忍不住要给出一个简单的代码片段来满足您的需求: function LastCharPos(const S: string; const Chr: char): integer; var i: Integer; begin result := 0; for i := length(S) downto 1 d
function LastCharPos(const S: string; const Chr: char): integer;
var
i: Integer;
begin
result := 0;
for i := length(S) downto 1 do
if S[i] = Chr then
Exit(i);
end;
由于这正是您想要的,并且不提供任何其他功能,因此它更加紧凑(特别是当我们使用Delphi2009及更高版本的Exit(Result)
语法时),并且可能会稍微快一点。然而,在Delphi2007中,您必须
function LastCharPos(const S: string; const Chr: char): integer;
var
i: Integer;
begin
result := 0;
for i := length(S) downto 1 do
if S[i] = Chr then
begin
result := i;
break; // or Exit; if you prefer that
end;
end;
在SysUtils单元中使用或。后者,尽管名称不同,但在Delphi版本中,string
是UnicodeString
时,它可以处理Unicode字符。(如果您仍然需要“真实”Ansi版本,请使用AnsiStrings单元。)
这些函数只搜索一个字符,鉴于
lastdimiter
从给定的可能性列表中搜索多个字符中的任意一个,请将StrRScan
视为lastdimiter
为一个字符定界符
参数进行了优化。以下是我为查找子字符串在绳子
function GetPositionOfNthOccurence(sSubStr, sStr: string; iNth: integer): integer;
var
sTempStr: string;
iIteration: integer;
iTempPos: integer;
iTempResult: integer;
begin
result := 0;
// validate input parameters
if ((iNth < 1) or (sSubStr = '') or (sStr = '')) then exit;
// evaluate
iIteration := 0;
iTempResult := 0;
sTempStr := sStr;
while (iIteration < iNth) do
begin
iTempPos := Pos(sSubStr, sTempStr);
if (iTempPos = 0) then exit;
iTempResult := iTempResult + iTempPos;
sTempStr := Copy(sStr, iTempResult + 1, Length(sStr) - iTempResult);
inc(iIteration);
end;
result := iTempResult;
end;
函数getPositionOfNotoccurence(sSubStr,sStr:string;iNth:integer):integer;
变量
sTempStr:字符串;
迭代:整数;
itempos:整数;
iTempResult:整数;
开始
结果:=0;
//验证输入参数
如果((iNth<1)或(sSubStr='')或(sStr=''),则退出;
//评估
迭代:=0;
iTempResult:=0;
sTempStr:=sStr;
而(迭代请注意,此函数是基于0的。System.SysUtils.TStringHelper.LastIndexOf在需要字符串而不是字符时也很方便。非常好,因为使用此代码还可以确定字符串中子字符串的出现数量。这给我解决了一个麻烦!谢谢你的贡献。