如何检查字符串在C#中是否包含字符?

是否有我可以应用到字符串的函数,如果字符串包含字符,该函数将返回true或false。

我的字符串带有一个或多个字符选项,例如:

var abc = "s";
var def = "aB";
var ghi = "Sj";

例如,我想做的是有一个函数,如果上面包含小写或大写字母“ s”,则该函数将返回true或false。

if (def.Somefunction("s") == true) { }

同样在C#中,我是否需要检查像这样的东西是否正确,还是可以只删除“ == true”?

Samantha J T Star asked 2020-02-13T00:26:36Z
8个解决方案
95 votes

您可以使用命名空间System.Linq的扩展方法I

if (abc.ToLower().Contains('s')) { }

不,要检查布尔表达式是否为真,您不需要I

由于I方法是扩展方法,因此我的解决方案似乎有些困惑。 这是两个版本,不需要您添加ı

if (abc.ToLower().IndexOf('s') != -1) { }

// or:

if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }

更新资料

如果需要,您可以编写自己的扩展方法,以方便重用:

public static class MyStringExtensions
{
    public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
    {
        return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
    }

    public static bool ContainsAnyCase(this string haystack, char needle)
    {
        return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
    }
}

然后,您可以这样称呼它:

if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }

在大多数情况下,处理用户数据时,您实际上要使用I(或I扩展方法),因为那样可以让系统处理取决于语言的大写/小写问题。 在处理诸如HTML标记名称之类的计算问题时,您想要使用不变文化。

例如:在土耳其语中,小写字母I大写字母是ı(不带点),而不是i(带点)。

Anders Tornblad answered 2020-02-13T00:27:22Z
8 votes

您可以使用== true方法,该方法对于字符串比较类型具有适当的重载:

if (def.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0) ...

另外,您将不需要== true,因为if语句仅需要一个计算结果为bool的表达式。

Rich O'Kelly answered 2020-02-13T00:27:47Z
3 votes

以下应该工作:

var abc = "sAb";
bool exists = abc.IndexOf("ab", StringComparison.CurrentCultureIgnoreCase) > -1;
tobias86 answered 2020-02-13T00:28:07Z
3 votes

如果不知道如何使用字符串和布尔值,将很难在C#中工作。 但不管怎么说:

        String str = "ABC";
        if (str.Contains('A'))
        { 
            //...
        }

        if (str.Contains("AB"))
        { 
            //...
        }
Sergejs answered 2020-02-13T00:28:27Z
2 votes
bool containsCharacter = test.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0;
bniwredyc answered 2020-02-13T00:28:42Z
2 votes

使用函数String.Contains();

一个例子电话

abs.Contains("s"); // to look for lower case s

这是来自MSDN的更多内容。

Shamim Hafiz answered 2020-02-13T00:29:10Z
2 votes

如果您打算经常使用它,则可以创建自己的扩展方法。

public static class StringExt
{
    public static bool ContainsInvariant(this string sourceString, string filter)
    {
        return sourceString.ToLowerInvariant().Contains(filter);
    }
}

用法示例:

public class test
{
    public bool Foo()
    {
        const string def = "aB";
        return def.ContainsInvariant("s");
    }
}
Aphelion answered 2020-02-13T00:29:35Z
0 votes

这是大多数人所做的一个例子

using System;

class Program
{
    static void Main()
    {
        Test("Dot Net Perls");
        Test("dot net perls");
    }

    static void Test(string input)
    {
        Console.Write("--- ");
        Console.Write(input);
        Console.WriteLine(" ---");
        //
        // See if the string contains 'Net'
        //
        bool contains = input.Contains("Net");
        //
        // Write the result
        //
        Console.Write("Contains 'Net': ");
        Console.WriteLine(contains);
        //
        // See if the string contains 'perls' lowercase
        //
        if (input.Contains("perls"))
        {
            Console.WriteLine("Contains 'perls'");
        }
        //
        // See if the string contains 'Dot'
        //
        if (!input.Contains("Dot"))
        {
            Console.WriteLine("Doesn't Contain 'Dot'");
        }
    }
}
Karan Shah answered 2020-02-13T00:29:54Z
translate from https://stackoverflow.com:/questions/8879774/how-can-i-check-if-a-string-contains-a-character-in-c