c# - 不区分大小写 'Contains(string)'

标签 c# string contains case-insensitive

有没有办法让下面的返回为真?

string title = "ASTRINGTOTEST";
title.Contains("string");

似乎没有允许我设置区分大小写的重载。目前我将它们都大写,但这很愚蠢(我指的是大写和小写带来的 i18n 问题)。

更新

这个问题很古老,从那时起我就意识到,如果您想全面调查它,我会为一个非常庞大而困难的主题要求一个简单的答案。

对于大多数情况,在单语、英语代码库中 this答案就足够了。我怀疑是因为来这里的大多数人都属于这一类,所以这是最受欢迎的答案。

This然而,答案提出了一个固有的问题,即在我们知道两个文本是相同的文化并且我们知道该文化是什么之前,我们无法比较不区分大小写的文本。这可能是一个不太受欢迎的答案,但我认为它更正确,这就是我将其标记为这样的原因。

最佳答案

您可以使用 String.IndexOf Method并通过 StringComparison.OrdinalIgnoreCase作为要使用的搜索类型:

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

更好的是为字符串定义一个新的扩展方法:

public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source?.IndexOf(toCheck, comp) >= 0;
    }
}

请注意,null propagation ?. 自 C# 6.0 (VS 2015) 起可用,供旧版本使用

if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;

用法:

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);

关于c# - 不区分大小写 'Contains(string)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444798/

相关文章:

ruby - 如何替换 block 中的字符串

c# - 尝试在字符串中查找单个字符的更快方法是什么?

java - 使用 Java 匹配正则表达式组

java - Java中的智能字符串匹配可能吗?

search - 如果搜索参数为空或丢失/错误,如何使用 Xpath 函数 'contains()' 不返回任何内容?

Swift: Array contains(AnyObject) error Cannot convert type of ... throw -> Bool 错误

c# - Visual Studio和C#和Web开发人员生产力工具/帮助

c# - 状态条标签中的 String.format() 值在 Win 7 和 Win XP 上显示不同

c# - 在 C# 页面处理期间, session 可以过期吗

c# - 在 C# 中更改网络配置