自定义实现str中的find方法:
1. 如果子串在字符串中第一次出现的位置
2. 如果没有找到,返回-1
3. end为0时,返回-1
def find(s, targer_str, start=0, end=-1):
if not (isinstance(s, str) and isinstance(targer_str, str)):
return None
if targer_str == '': # 目标字符串为空时,返回0
return 0
elif s == '': # 目标字符串不为空,源字符串为空时,返回-1
return -1
length = len(targer_str) # 获取目标字符串的长度
if end == -1: # end如果为-1,即为源字符长度
end = len(s)
for i in range(start, end): # 遍历指定范围的坐标
if i+length <= end and end != 0: # 当前位置加目标字符串长度小于end且end不为0时
if s[i:i+length] == targer_str: # 如果s[i:i+length]子串等于目标字符串
if start < 0: # 如果start为负数,加上源字符串长度转为正数
return i + len(s)
return i # 返回当前位置
return -1 # 否则返回-1
if __name__ == '__main__':
print(find('i am a boy!', 'boy', -10, -1))
执行结果:
% python chapter4.py
7