【问题标题】:How to make String.Contains case insensitive? [duplicate]如何使 String.Contains 不区分大小写? [复制]
【发布时间】:2013-07-07 23:40:46
【问题描述】:

如何使以下内容不区分大小写?

myString1.Contains("AbC")

【问题讨论】:

  • String.Contains 的 MSDN 文章的副本,建议“另见:IndexOf”...
  • 好吧,如果它在 VB.Net 中要求答案,这个问题不是 100% 重复的,因为 VB.Net 具有 C# 没有的功能,例如可以使用的 LIKE 运算符在这里。
  • 他标记了两种语言,所以他可能不在乎解决方案是哪一种,所以副本完全回答了这个问题。无论如何,如果他用 onlt vb.net 编辑他的问题,那么它将自动进入重新打开队列。

标签: c# .net vb.net string case-insensitive


【解决方案1】:
bool b = list.Contains("Hello", StringComparer.CurrentCultureIgnoreCase);

[编辑] 扩展代码:

public static bool Contains(this string source, string cont
                                                    , StringComparison compare)
{
    return source.IndexOf(cont, compare) >= 0;
}

这可以工作:)

【讨论】:

  • 标准 C# 中不存在此方法
  • 这是问题的原因......谢谢@trippino
  • @trippino 用扩展代码编辑了我的答案
  • 感谢上帝的回答
【解决方案2】:

你可以使用:

if (myString1.IndexOf("AbC", StringComparison.OrdinalIgnoreCase) >=0) {
    //...
}

这适用于任何 .NET 版本。

【讨论】:

  • 你的答案有两个错别字,否则很好;-) 应该是(显然)StringComparison.OrdinalIgnoreCase
【解决方案3】:

您可以创建自己的扩展方法来执行此操作:

public static bool Contains(this string source, string toCheck, StringComparison comp)
  {
    return source != null && toCheck != null && source.IndexOf(toCheck, comp) >= 0;
  }

然后调用:

 mystring.Contains(myStringToCheck, StringComparison.OrdinalIgnoreCase);

【讨论】:

  • 这可以说是最好的答案,将其包装在扩展方法中。
  • @Moo-Juice 是的,因为它很熟悉 :) stackoverflow.com/a/444818/447156
  • 我建议调用该函数,而不是与框架中的某些内容(例如您的姓名首字母+包含)完全匹配。我将这种方法用于很多事情。我的缩写是 PS,所以我有 psContains、psStartsWith、psEndsWith 等。我认为它应该有所不同的原因是,您可以通过阅读代码来判断它要做什么。此外,如果签名兼容,编译器可能不喜欢它。如果它们足够兼容,编译将无助于发现您的扩展是否在起作用。扩展是 Dotnet 的真正瑰宝。如果使用正确:)
  • 我希望我能给你一个以上的赞成票!
  • 您应该检查字符串和 toCheck 参数是否为空。如果其中一个为空,那么您应该返回 false。否则会抛出异常。
猜你喜欢
  • 2021-04-12
  • 2017-02-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2013-01-27
  • 1970-01-01
  • 2011-10-14
相关资源
最近更新 更多