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

如何实现不考虑顺序的字符串子串存在性判断

解决方案

你的问题出在find()方法只会判断连续的子串,但你的示例里两个字符串是内容相同但顺序、大小写不同的非连续匹配场景。以下是几种最简单的实现方式,按需选择:

场景1:判断两个字符串的单词集合完全一致(忽略大小写、顺序)

把字符串统一转小写,拆成单词集合后比较,完全适配你的示例场景:

str1 = 'Wolverine vs Freddy Krueger'
str2 = 'Freddy Krueger Vs Wolverine'

set1 = set(str1.lower().split())
set2 = set(str2.lower().split())

print(set1 == set2)  # 输出 True

场景2:判断一个字符串的所有单词都在另一个中存在(忽略大小写)

如果允许其中一个字符串包含额外单词,只要核心内容互相覆盖:

str1_words = str1.lower().split()
str2_words = str2.lower().split()

# 检查str1的所有单词都在str2里
print(all(word in str2_words for word in str1_words))  # 输出 True
# 检查str2的所有单词都在str1里
print(all(word in str1_words for word in str2_words))  # 输出 True

补充:仅忽略大小写的连续子串判断

如果你的需求还是严格的连续子串匹配,只是要忽略大小写差异:

# 这种方式在你的示例里会返回False(因为顺序不同),仅适用于单纯大小写差异的连续子串场景
print(str1.lower() in str2.lower())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:37:22