[英]How to check if any string from array of string contains in another string in c#
我正在編寫類似於以下代碼的邏輯-
string myString = "ABCD";
if(myString.Contains("AB") && myString.Contains("C") && !myString.Contains("XYZ"))
{
//Do something
}
我想寫上面的代碼是這樣的:
string myString = "ABCD";
if( myString .contains any string from new[] { "AB", "C" } )
{
//Do Something
}
你能告訴我,我怎樣才能實現它? 提前致謝。
您想檢查數組是否有Any
項目,如myString
Contains
它:
using System.Linq;
...
// myString contains "AB" or "C"
if (new[]{ "AB", "C" }.Any(item => myString.Contains(item))) {
...
}
把All
它myString
應該包含"AB"
和"C"
// myString contains both "AB" and "C"
if (new[]{ "AB", "C" }.All(item => myString.Contains(item))) {
...
}
您可以使用.All()
因為您正在嘗試檢查數組中存在的所有字符串
var checkElements = new string[]{ "AB", "C"};
//All element contains in myString then this will return true. It checks all elements
if(checkElements.All(x => myString.Contains(x)))
{
//Your business logic
}
如果要檢查,如果數組checkElements
中的任何字符串存在於myString
中,則可以使用 System.Linq 中的System.Linq
.Any()
var checkElements = new string[]{ "AB", "C"};
//Any one element contains in myString then this will return true.
if(checkElements.Any(x => myString.Contains(x)))
{
//Your business logic
}
一個小字符串擴展方法怎么樣?
public static class StringExt
{
public static bool ContainsAnyOf(this string self, params string[] strings)
{
return strings.Any(self.Contains);
}
}
然后你可以這樣做:
if (myString.ContainsAnyOf("AB", "C") && !myString.Contains("XYZ"))
{
//Do something
}
這聽起來像是擴展方法的候選者!
public static class StringExtensions
{
public static bool Contains(this string self, params string[] values)
{
for(int ix = 0; ix < values.Length; ++ix)
if(!self.Contains(values[ix]))
return false;
return true;
}
}
對於您的代碼,例如:
string myString = "ABCD";
if(myString.Contains("AB") && myString.Contains("C") && !myString.Contains("XYZ"))
{
//Do something
}
讓我們使用 LINQ 進行所有檢查:
var theStr = "ABCD";
var rules = new string[]{ "AB", "C", "!XYZ"};
if(rules.All(rule => rule[0] == '!' ? !theStr.Contains(rule.Substring(1)) : theStr.Contains(rule)))
{
//Do something
}
我確實覺得通過在數據中加上前綴“;”來將“not”放入數據中可能是一種輕微的濫用。 盡管。 考慮制定一個規則 class,它有一個字符串和一個 RuleType 枚舉,它定義了該字符串應該被搜索為“包含”還是“不包含”。特別是如果你想要找到你想要的東西之一的字符串're looking for really 是一個以“!”開頭的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.