C#如何从字符串数组中获取与长字符串匹配的具体值?
高效获取匹配的字符串元素
给定长字符串:
string line = "this is a banana testing quote.";
和搜索数组:
string[] searchList = new string[4] {"b", "quote", "tee", "obb"};
使用searchList.Any(line.Contains)只能判断字符串是否包含数组中的任意元素,但无法获取具体匹配值。如果要避免二次遍历,直接拿到匹配元素,推荐以下高效方法:
- 获取第一个匹配元素:用
FirstOrDefault方法,它会在找到第一个满足条件的元素时立即停止遍历,无需扫描整个数组,效率和Any相当,同时直接返回匹配值:
string matchedItem = searchList.FirstOrDefault(item => line.Contains(item));
如果已经通过Any确认存在匹配元素,也可以直接用First方法:
string matchedItem = searchList.First(item => line.Contains(item));
- 获取所有匹配元素:如果需要数组中所有符合条件的元素,可使用
Where方法(会遍历整个数组,适合需要完整匹配结果的场景):
IEnumerable<string> matchedItems = searchList.Where(item => line.Contains(item));
内容的提问来源于stack exchange,提问作者kown owl
相关产品推荐
相关产品推荐

