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

Haskell:如何利用两组整数列表作为起止索引提取字符串子串

解决方案:根据索引列表提取字符串子串

没问题,这是个很常见的字符串处理需求,我结合你的示例给你写个具体的实现方案,用Python就能轻松搞定:

思路说明

核心逻辑就是一一配对起始和结束索引,然后对原字符串做切片提取。这里要注意一个细节:Python的字符串切片是左闭右开的(也就是s[a:b]会包含索引a的字符,但不包含索引b的字符),而你的示例里结束索引是需要包含在子串里的,所以切片时要给结束索引加1才能拿到正确结果。

代码实现

# 定义你的输入数据
original_str = "Lorem ipsum (dolor) [sit] amet, {consectetur} adipiscing elit"
start_indices = [12, 20, 32]
end_indices = [18, 24, 45]

# 提取子串的核心逻辑
result = [original_str[start:end+1] for start, end in zip(start_indices, end_indices)]

# 输出结果
print(result)

运行这段代码后,输出完全符合你的预期:

["(dolor)","[sit]","{consectetur}"]

关键细节解释

  • zip(start_indices, end_indices):把两个列表里对应的索引一一配对,生成(12,18)、(20,24)这样的元组,方便我们同时获取每个子串的起止位置
  • original_str[start:end+1]:因为你的结束索引是需要包含在子串中的,所以给end加1,让切片范围刚好覆盖到目标字符;如果你的业务场景里结束索引本来就是“不包含”的规则,直接去掉+1就行

拓展:其他语言的实现思路(可选)

如果用别的语言处理,逻辑也是相通的:

  • Java:用substring(start, end+1)(Java的substring同样是左闭右开规则)
  • JavaScript:用slice(start, end+1)(和Python切片规则一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:52:36