通过以最大n + 1次拆分在子字符串处进行拆分,可以找到字符串中子字符串的第n次出现。如果结果列表的大小大于n + 1,则表示该子字符串出现了n次以上。它的索引可以通过一个简单的公式找到,即原始字符串的长度-最后分割的部分的长度-子字符串的长度。
def findnth(string, substring, n): parts = string.split(substring, n + 1) if len(parts) <= n + 1: return -1 return len(string) - len(parts[-1]) - len(substring) findnth('foobarfobar akfjfoobar afskjdf foobar', 'foobar', 2)
输出结果
这将给出输出:
31
此中的n从0开始。更改它非常简单。