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

如何在Dart中实现类似MySQL FIND_IN_SET的字符串匹配逻辑

实现思路与代码示例

要实现你描述的匹配逻辑,核心是先判断待匹配字符串是否为逗号分隔的选项集合,再分别采用不同的匹配规则:

核心逻辑步骤

  • 第一步:检查待匹配字符串是否包含逗号(,):
    • 如果包含逗号:将字符串按逗号分割,清理掉每个选项前后的空白字符,同时过滤掉分割后产生的空字符串(比如末尾逗号导致的空项),然后判断输入字符串是否是这个清理后的选项列表中的一员
    • 如果不包含逗号:直接判断输入字符串和待匹配字符串是否完全相等

代码实现(Python)

这里用Python写一个通用的匹配函数,方便你直接测试:

def match_target(input_str, target_str):
    # 检查目标字符串是否是逗号分隔的选项
    if ',' in target_str:
        # 分割并清理每个选项:去掉前后空格,过滤空字符串
        options = [opt.strip() for opt in target_str.split(',') if opt.strip()]
        return input_str in options
    else:
        # 无逗号则要求完全匹配
        return input_str == target_str

验证你的示例

我们来逐一验证你给出的场景:

  1. 测试String1("baby,fetus,")和输入"baby":

    print(match_target("baby", "baby,fetus,"))  # 输出: True
    

    解释:String1包含逗号,分割清理后得到["baby", "fetus"],输入"baby"在列表中,返回True。

  2. 测试String2("baby fetus")和输入"baby":

    print(match_target("baby", "baby fetus"))  # 输出: False
    

    解释:String2没有逗号,直接比较"baby"和"baby fetus",不相等,返回False。

  3. 测试String3("baby fetus, baby boy,")和输入"baby fetus":

    print(match_target("baby fetus", "baby fetus, baby boy,"))  # 输出: True
    

    解释:String3包含逗号,分割清理后得到["baby fetus", "baby boy"],输入在列表中,返回True。

  4. 测试String3和输入"baby":

    print(match_target("baby", "baby fetus, baby boy,"))  # 输出: False
    

    解释:清理后的选项列表里没有"baby"这个单独项,返回False。

这个逻辑完全符合你提出的规则,而且处理了末尾逗号、选项前后空格的边缘情况,适用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:42:23