已判断字符串含列表元素,如何获取该元素在列表中的索引?
获取匹配元素在列表中的索引
可以用以下几种方式实现:
方法1:使用List.FindIndex方法
如果只需要第一个匹配元素的索引,直接用FindIndex最简洁:
// 假设abc是List<string>类型 int matchIndex = abc.FindIndex(s => def.Contains(s));
- 找到匹配元素时返回对应非负索引;无匹配时返回
-1。
方法2:遍历列表并记录索引
如果需要同时获取匹配元素和索引,可结合Enumerable.Select遍历:
var matchInfo = abc.Select((item, index) => new { Item = item, Index = index }) .FirstOrDefault(x => def.Contains(x.Item)); if (matchInfo != null) { int index = matchInfo.Index; string matchedItem = matchInfo.Item; // 执行后续逻辑 }
- 该方法返回第一个匹配的元素及其索引,无匹配时
matchInfo为null。
方法3:获取所有匹配元素的索引
如果列表中有多个元素能被字符串包含,想要获取全部索引:
List<int> allMatchIndices = abc.Select((item, index) => new { Item = item, Index = index }) .Where(x => def.Contains(x.Item)) .Select(x => x.Index) .ToList();
- 结果是包含所有匹配索引的列表,无匹配则为空列表。
注意事项
- 确保
abc是支持索引访问的集合(如List<T>、数组),以上方法均适用。 def.Contains(s)默认区分大小写,如需忽略大小写,可替换为def.IndexOf(s, StringComparison.OrdinalIgnoreCase) >= 0。
内容的提问来源于stack exchange,提问作者qatestprofile
相关产品推荐
相关产品推荐

