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

字符串拆分逻辑问题:如何从路径式字符串提取连续子路径

嘿,我明白你遇到的麻烦了!针对你输入的denver/tulsa/dallas/这种路径字符串,要提取相邻的两段组合(比如denver/tulsa和tulsa/dallas),其实不用纠结手动统计斜杠然后找起始位置,有更直观的方法,也可以实现你最初的思路,我给你两种方案参考:

方案一:分割后组合(推荐)

这种方法更简洁易读,先把字符串拆成独立的城市列表,再遍历生成相邻两段的组合:

input_str = "denver/tulsa/dallas/"
# 按斜杠分割字符串,同时过滤掉末尾斜杠产生的空字符串
cities = [city for city in input_str.split('/') if city]
# 遍历列表,拼接相邻的两个城市
result = [f"{cities[i]}/{cities[i+1]}" for i in range(len(cities)-1)]

print(result)  # 输出结果:['denver/tulsa', 'tulsa/dallas']

原理说明

  • split('/')会把输入字符串拆成['denver', 'tulsa', 'dallas', ''],通过列表推导式if city过滤掉空元素,得到干净的城市列表['denver', 'tulsa', 'dallas']
  • 循环遍历列表的索引(从0到倒数第二个元素),将当前元素和下一个元素用斜杠拼接,就能得到所有相邻的路径段

方案二:手动截取实现你的初始思路

如果你想坚持用“统计斜杠+截取”的思路,也可以通过每次更新起始位置来实现迭代:

input_str = "denver/tulsa/dallas/"
start_pos = 0

while True:
    # 找到第一个斜杠的位置(从当前起始点开始找)
    first_slash = input_str.find('/', start_pos)
    if first_slash == -1:
        break  # 没有斜杠就退出循环
    
    # 找到第二个斜杠的位置(从第一个斜杠的下一位开始找)
    second_slash = input_str.find('/', first_slash + 1)
    if second_slash == -1:
        break  # 找不到第二个斜杠就退出
    
    # 截取从起始位置到第二个斜杠前的部分
    current_segment = input_str[start_pos:second_slash]
    print(current_segment)  # 依次输出 denver/tulsa、tulsa/dallas
    
    # 更新起始位置为第一个斜杠的下一位,也就是下一个城市的开头
    start_pos = first_slash + 1

原理说明

每次截取完一段后,把start_pos设为第一个斜杠的下一位(也就是tulsa的首字母t的位置),这样下一次循环就会从这个位置开始查找斜杠,自然就能得到tulsa/dallas这段了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:13:28