[英]A string contains at least one but no more than 2 letters “n” in C# regular expression?
[英]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.