簡體   English   中英

C#if string包含多於1個值

[英]C# if string contains more than 1 value

早上好,

if語句中,如果我們想檢查字符串是否包含值,我們有:

if (string.Contains("Value1"))    
{    
}    

如何在不繼續編寫整個語句的情況下使字符串與if語句中的更多值進行比較? 例如,要避免以下聲明

if ((string.Contains("Value1") && (string.Contains("Value2")) && (string.Contains("Value3")))    
{    
}

謝謝

因此,基本上,您要檢查字符串中是否包含所有值。 幸運的是(在LINQ的幫助下),這幾乎可以直接翻譯成C#:

var values = new String[] {"Value1", "Value2", "Value3"};

if (values.All(v => myString.Contains(v))) {
    ...
}

同樣,如果你想檢查是否有任何值包含字符串中,你會替代All通過Any

好吧,你可以使用LINQ:

string[] requiredContents = { "Foo", "Bar", "Baz" };

if (requiredContents.All(x => text.Contains(x))
{
    ...
}

請注意,就像短路&&運營商, All會盡快找到它不滿足條件的值停止。 (如果您想使用Any其他地方類似的方式,將盡快找到這確實滿足條件的數值停止。)

我不會打擾只有一個相當小的數字。 沒有無關的括號,它真的不是那么糟糕:

if (text.Contains("foo") && text.Contains("bar") && text.Contains("Baz"))
{
}

無論是否有真正的好幾個值,如果設定值被傳遞作為一個參數,或改變在一些其他的方式,我只會開始使用更一般的形式(我可能會划清界線,在大約5)

因為您需要“您的”字符串包含所有值:

var values = new String[] {"Value1", "Value2", "Value3"};
var s = yourString;

if (values.Count(v => s.Contains(v)) == values.Length) {
    ...
}

這是最好的解決方案嗎? 可能不是。 它是否可讀和可擴展? 是。

var matches = {"string1", "string2", "string3","string-n"};
var i = 0;
foreach(string s in matches)
{
    if(mystring.Contains(s))
    {
        i++;
    }
}
if(i == matches.Length)
{
    //string contains all matches.
}
if(stringArray.Any(s => stringToCheck.Contains(s)))

如果要確保它包含所有子字符串,請將Any更改為All

if(stringArray.All(s => stringToCheck.Contains(s)))

暫無
暫無

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

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