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

如何快速实现数组中包含用户输入子串的元素匹配查询

子串匹配过滤实现方案

这个需求的核心逻辑是遍历数组元素,逐一判断是否包含用户输入的子串,收集符合条件的元素即可。主流编程语言都内置了原生的子串判断方法,无需手动实现匹配逻辑,普通场景下性能完全够用。

核心实现步骤

  • 可选:根据业务需求决定是否做大小写兼容,需要不区分大小写匹配时,可先将用户输入和数组元素统一转为小写/大写
  • 遍历目标数组的所有字符串元素
  • 调用原生方法判断当前元素是否包含输入子串
  • 汇总所有符合条件的元素作为返回结果

常见编程语言实现示例

Python 实现

区分大小写版本:

def filter_by_substring(input_str: str, str_array: list[str]) -> list[str]:
    return [item for item in str_array if input_str in item]

不区分大小写版本:

def filter_by_substring(input_str: str, str_array: list[str]) -> list[str]:
    lower_input = input_str.lower()
    return [item for item in str_array if lower_input in item.lower()]

测试示例:
输入input_str = "Ai",数组["Airplane", "Air", "Airport", "Airfield", "Banana", "Apple"],返回结果为["Airplane", "Air", "Airport", "Airfield"],完全匹配需求示例。

JavaScript 实现

区分大小写版本:

function filterBySubstring(inputStr, strArray) {
    return strArray.filter(item => item.includes(inputStr))
}

不区分大小写版本:

function filterBySubstring(inputStr, strArray) {
    const lowerInput = inputStr.toLowerCase()
    return strArray.filter(item => item.toLowerCase().includes(lowerInput))
}

Java 实现

区分大小写版本:

import java.util.List;
import java.util.stream.Collectors;

public class SubstringFilter {
    public List<String> filterBySubstring(String inputStr, List<String> strArray) {
        return strArray.stream()
                .filter(item -> item.contains(inputStr))
                .collect(Collectors.toList());
    }
}

特殊场景优化

如果数组元素量级超过10万、且需要频繁执行匹配查询,可以提前构建前缀树(字典树)索引,查询效率会比遍历判断高1-2个数量级,普通小数据量场景直接用上述原生方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:36:04