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

Kotlin如何实现在ArrayList的字符串中搜索任意顺序的多关键词

解决方案

你需要先把输入的搜索条件按空格拆分为独立关键词,再逐个校验每个关键词是否都存在于目标title中即可,具体实现如下:

修改后代码

fun clickItem(criteria: String) {
    // 拆分关键词:按任意数量空格分割,过滤空字符串、前后去空格
    val keywords = criteria.split("\\s+".toRegex())
        .filter { it.isNotBlank() }
        .map { it.trim().lowercase() }
    
    // 无有效搜索关键词时返回全量列表,可按业务需求调整逻辑
    if (keywords.isEmpty()) {
        productList = ArrayList(productListAll)
        return
    }
    
    productList = productListAll.filter { data ->
        // 所有关键词都要在title中存在,不限制顺序
        keywords.all { keyword ->
            data.title.lowercase().contains(keyword)
        }
    } as ArrayList<Data>
}

逻辑说明

  • 拆分关键词时用正则\\s+匹配任意多个连续空格,避免用户输入多个空格、首尾带空格的场景下拆分出无效空字符串
  • 提前把关键词和title都转成小写实现忽略大小写匹配,性能优于重复调用contains的ignoreCase参数
  • 用all函数保证所有拆分后的关键词都必须在title中存在,完全匹配「包含全部搜索词、不限制出现顺序」的需求
  • 额外补充了空关键词的兜底逻辑,避免用户输入全空格时返回空列表,可根据自身业务要求调整

内容的提问来源于stack exchange,提问作者Edward B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:03