集合/字符串.包含与集合/字符串.IndexOf

Posted

技术标签:

【中文标题】集合/字符串.包含与集合/字符串.IndexOf【英文标题】:collection/string .Contains vs collection/string.IndexOf 【发布时间】:2011-02-19 08:31:48 【问题描述】:

是否有理由在字符串/列表上使用 .Contains 而不是 .IndexOf? 我使用 .Contains 编写的大多数代码在不久之后都需要项目的索引,因此必须同时执行这两个语句。但为什么不合二为一呢?

if ((index = blah.IndexOf(something) >= 0)
    // i know that Contains is true and i also have the index

【问题讨论】:

【参考方案1】:

它们是用于不同目的的不同函数,但您可以使用 IndexOf 来模仿 Contains。

使用包含的原因?在Linq中,尤其是翻译成sql的时候,变成了比较简单的sql语句,IndexOf翻译起来比较复杂

【讨论】:

【参考方案2】:

你说得对,IndexOf 是比Contains 更通用的操作。但是,Contains 仍然非常有用,因为它明确地表示了操作。

if(blah.IndexOf(something) >=0)


不像操作那么明显

if(blah.Contains(something))


所以如果你需要索引,那么你应该使用IndexOf操作,如果你只需要知道字符串是否包含子字符串那么使用Contains

将工具用于为其创建的工作。

【讨论】:

【参考方案3】:

您想要使用 Contains 的一个原因是它有一个重载,可以让您指定 IEqualityComparer<String>(如果您希望比较不区分大小写或其他内容)。 IndexOf 没有这样的重载。

【讨论】:

以上是关于集合/字符串.包含与集合/字符串.IndexOf的主要内容,如果未能解决你的问题,请参考以下文章

Lua用table实现各种数据结构-集合与包

java IO流集合类部分小知识点总结

万字总结 !!redis数据结构与对象

.NET基础拾遗字符串集合和流3

MongoDB:删除名称与字符串匹配的所有集合

2017年校招全国统一模拟笔试(第二场)编程题集合--Python