是否存在任何RTL Delphi函数来确定字符串中最后一次出现字符的位置?查找字符串中字符的最后出现次数
回答
尝试作为SysUtils单元的一部分的LastDelimiter
函数。
RRUZ回答了实际问题(他给了你一个RTL函数)。
不过,我不能完全抵挡给人一种简单的代码片段,你想要做什么:
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;
因为这不正是你想要什么,不提供其他功能,这是更为紧凑的(特别是当我们使用Delphi 2009及更高版本的Exit(Result)
语法),可能稍微快一点。 2007年德尔福,但是,你必须做
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;
为什么我在同一时间给出的每个答案都低估了?! – 2011-05-03 17:41:43
+1同情:) – Funk247 2014-08-14 13:15:51
使用StrRScan
或AnsiStrRScan
,无论是在sysutils的单元。后者尽管有其名称,但仍适用于Delphi版本中的Unicode字符,其中string
为UnicodeString
。 (如果您仍然需要“真实”的ANSI版本,使用AnsiStrings单位)。
这些功能搜索的一个字符,而LastDelimiter
搜索任何从可能性的定列表几个大字 - 想StrRScan
如LastDelimiter
针对单字符Delimiters
参数进行了优化。
+1。我真的应该在某天学习这些类C函数...... – 2011-04-30 21:26:20
这里是我对找到字符串中第n个子字符串出现位置的贡献。
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;
非常好,因为使用此代码也可以确定字符串中子字符串的出现次数。这给我解决了一个麻烦!感谢你的贡献。 – Saulo 2017-10-05 18:32:11
最好的跨平台解决方案是TStringHelper.LastIndexOf,它自Delphi XE4以来就存在。
注意,这个函数是基于0的。
- 1. C++:查找字符串中字符的最后一次出现
- 2. 如何查找Swift字符串中子字符串的最后一次出现?
- 3. 查找字符串到最后出现
- 4. PHP:查找字符串中的最后一次出现
- 5. 使用Ruby查找字符串中字符的出现次数
- 6. 查找字符串中出现字符的次数
- 7. 如何查找字符串中最后一次出现的字符集
- 8. 查找字符串的最后一次出现
- 9. 查找字符串中字符的最高连续出现次数抛出字符串索引超出范围
- 10. MYSQL:查找字符的最后一次出现在一个字符串
- 11. 如何找到字符串中最后一次出现的字符串?
- 12. 替换字符串中最后一次出现的字符
- 13. 在只出现一次的字符串中查找字符
- 14. 在最后一次出现字符后删除字符串
- 15. 替换字符的最后一次出现的字符串
- 16. 查找特定字符串后出现的字符串
- 17. 查找列表中某个字符的最后一次出现
- 18. 检查字符串中出现字符的次数
- 19. 在字符串中最后一次出现分隔符后删除字符
- 20. 在flex中的字符串中最后一次出现字符串
- 21. 查找python中字符串中单词的出现次数3
- 22. 在MySQL中查找字符串中子字符串的出现?
- 23. 在Java中查找字符串中第二次出现的子字符串
- 24. 递归查找字符串中出现的字符数
- 25. 替换字符串中最后出现的子字符串
- 26. C++查找子字符串中最后一次发生的字符串
- 27. 如何查找一个字符串中字符出现的总次数?
- 28. 递归查找字符串中指定字符的出现次数
- 29. 如何查找NSString中最后一次出现的子字符串?
- 30. 查找多个文件中字符串出现的次数
System.SysUtils.TStringHelper.LastIndexOf当你想要一个字符串而不是一个字符时也可以很方便。 – Ampere 2017-04-07 08:59:05