簡體   English   中英

如何檢查字符串是否包含 C# 中的字符?

[英]How can I check if a string contains a character in C#?

是否有一個函數可以應用於字符串,如果字符串包含一個字符,該函數將返回 true 或 false。

我有包含一個或多個字符選項的字符串,例如:

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

例如,我想做的是有一個函數,如果上面包含小寫或大寫的“s”,它將返回 true 或 false。

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

同樣在 C# 中,我是否需要檢查這樣的事情是否屬實,或者我可以刪除“== true”嗎?

您可以使用命名空間System.Linq的擴展方法.Contains()

using System.Linq;

    ...

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

而且,要檢查布爾表達式是否為真,您不需要== true

由於Contains方法是一個擴展方法,我的解決方案可能會令人困惑。 這里有兩個不需要你using System.Linq;添加的版本using System.Linq;

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')) { }

在大多數情況下,在處理用戶數據時,您實際上希望使用CurrentCultureIgnoreCase (或ContainsAnyCase擴展方法) ,因為這樣可以讓系統處理取決於語言的大寫/小寫問題。 在處理計算問題時,例如 HTML 標簽的名稱等,您希望使用不變文化。

例如:在土耳其語中,小寫的大寫字母Iı (不帶點) ,而不是i (帶點)

您可以使用IndexOf方法,該方法具有適合字符串比較類型的重載:

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

此外,您不需要== true ,因為 if 語句只需要一個計算結果為bool的表達式。

使用函數 String.Contains();

一個示例調用,

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

這里有更多來自 MSDN。

以下應該工作:

var abc = "sAb";
bool exists = abc.IndexOf("ab", StringComparison.CurrentCultureIgnoreCase) > -1;
bool containsCharacter = test.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0;

如果不知道如何使用字符串和布爾值,就很難在 C# 中工作。 但無論如何:

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

        if (str.Contains("AB"))
        { 
            //...
        }

如果您打算大量使用它,您可以創建自己的擴展方法。

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");
    }
}

這是大多數人所做的一個例子

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'");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM