You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.5中如何验证指定索引处是否存在子串FooBar

检查指定索引位置是否以目标子串开头

嘿,这个需求其实很好解决,Python里有几种简单又靠谱的方法能搞定它。咱们直接看解决方案:

方法一:切片对比法

这种方法思路很直观:先计算目标子串的长度,然后从给定索引处截取相同长度的子串,再和目标子串做对比。同时要先判断边界情况,避免索引越界。

代码示例

# 定义原始字符串和目标子串
original_str = "rsFooBargrdshtrshFooBargreshyershytreBarFootrhj"
target_sub = "FooBar"

def check_sub_at_index(s, target, start_idx):
    target_length = len(target)
    # 先判断起始索引是否合法,避免截取时越界
    if start_idx + target_length > len(s):
        return False
    # 截取对应长度的子串并对比
    return s[start_idx:start_idx+target_length] == target

# 测试你的案例
print(check_sub_at_index(original_str, target_sub, 17))  # 输出: True
print(check_sub_at_index(original_str, target_sub, 13))  # 输出: False

方法二:使用内置的startswith方法(推荐)

Python字符串自带的startswith方法其实支持指定起始位置参数,完全匹配咱们的需求,而且代码更简洁,还自动处理了边界情况,不需要额外判断。

代码示例

original_str = "rsFooBargrdshtrshFooBargreshyershytreBarFootrhj"
target_sub = "FooBar"

# 直接调用startswith,第二个参数指定起始索引
print(original_str.startswith(target_sub, 17))  # 输出: True
print(original_str.startswith(target_sub, 13))  # 输出: False

为什么推荐这个方法?

  • 代码更简洁,可读性更强
  • 底层是Python优化过的实现,效率更高
  • 自动处理了边界情况:如果起始索引超出字符串长度,或者起始索引+子串长度超出字符串长度,都会直接返回False,不会抛出索引错误

边界情况测试

比如传入一个超出范围的索引,两种方法都会安全返回False:

print(check_sub_at_index(original_str, target_sub, 100))  # 输出: False
print(original_str.startswith(target_sub, 100))  # 输出: False

内容的提问来源于stack exchange,提问作者user7450368

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:31:59