为何contains方法无法匹配包含列表子串的failedRecord.record?
问题原因与解决方案
核心问题
你写的逻辑搞反了!
当前代码validValueType.ValueTypeGroup.contains(failedRecord.record)是在判断:完整的failedRecord.record字符串是不是ValueTypeGroup列表中的某一项。但你的需求是检查ValueTypeGroup里的任意子串是否存在于failedRecord.record中,两者完全是反向逻辑。
ValueTypeGroup里的元素是"\"is_enabled\": false"、"\"value\":\"OUT\""这种短子串,而failedRecord.record是一整段JSON字符串,显然完整的JSON不会出现在短子串列表里,所以每次都会进入else分支。
修正代码
把判断逻辑改成遍历ValueTypeGroup,检查是否有任意一个元素是failedRecord.record的子串,用Kotlin的any函数就能实现:
fun publishAlert(failedRecord: Record<String>) { if (validValueType.ValueTypeGroup.any { failedRecord.record.contains(it) }) { // 执行操作 } else { // 无匹配,执行其他操作 } }
或者更简洁的写法:
if (validValueType.ValueTypeGroup.any { it in failedRecord.record }) { // 执行操作 }
这样就能正确判断failedRecord.record是否包含列表中的任意子串了。
内容的提问来源于stack exchange,提问作者AnthonyEdwardsStan
相关产品推荐
相关产品推荐

