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

Groovy中如何用indexOf匹配字符串片段获取数组元素位置?

问题原因

数组的indexOf方法是精确匹配整个元素,它只会检查数组中是否存在与传入参数完全相等的元素,不会判断元素是否包含该子串。你传入"Parrot",但数组里没有完全等于"Parrot"的元素,所以返回-1。

解决方案

在Groovy中,可以使用findIndexOf方法配合闭包实现需求,它支持自定义判断逻辑:

def birdArr = ["Geeen is Parrot", "Red is cucumber", "whitePigeon"]
// 查找第一个包含"Parrot"的元素索引
def targetIndex = birdArr.findIndexOf { element -> element.contains("Parrot") }
println(targetIndex) // 输出:0

原理说明

findIndexOf会遍历数组的每个元素,将元素传入闭包执行判断:

  • 闭包里用字符串的contains方法检查当前元素是否包含目标子串
  • 找到第一个满足条件的元素后,立即返回它的索引
  • 若遍历完所有元素都无匹配项,返回-1

手动实现方式(可选)

如果不想用findIndexOf,也可以通过循环遍历数组,结合字符串的indexOf方法实现:

def birdArr = ["Geeen is Parrot", "Red is cucumber", "whitePigeon"]
def target = "Parrot"
def resultIndex = -1

for (int i = 0; i < birdArr.size(); i++) {
    // 用字符串的indexOf判断是否包含子串,不等于-1表示存在
    if (birdArr[i].indexOf(target) != -1) {
        resultIndex = i
        break // 找到第一个匹配项后退出循环
    }
}

println(resultIndex) // 输出:0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:12:43