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
相关产品推荐
相关产品推荐

