[英]C# - Check if string contains characters of another string at the same order
[英]Check if a string contains particular characters in any order
我可以解釋我想做的最好的方法是舉一個例子:
我的數據庫中有一個字符串StackOverflow
,當用戶鍵入OAW
我想返回該字符串以及包含任何順序的這三個字符的任何其他單詞。
我嘗試過使用各種LINQ / Lambda表達式,但無濟於事。
query.Where(a => a.SerialNumber.Contains(a));
我在SO上找到了一篇與我的帖子類似的帖子,但它使用Java。
我覺得我想做的事情非常容易實現,但是我只是想念它。 任何幫助將不勝感激。
您可以嘗試這樣的事情:
query.Where(str => value.All(str.SerialNumber.Contains));
在這里,對於數據庫中的任何單詞,您都檢查str.SerialNumber
是否包含value
OAW
(使用All
擴展方法)的All
str.SerialNumber
。
更新資料
這個
str.SerialNumber.Contains
等效於以下lambda表達式:
x => str.SerialNumber.Contains(x)
x
表示我們應用All
的序列中的隨機元素。 換句話說就是value
的隨機性。
您可以使用ContainsAll類型的函數。
public static bool ContainsAllItems(IEnumerable<T> a, IEnumerable<T> b)
{
return !b.Except(a).Any();
}
注意
該功能是從這里借來的
您可以通過稍微修改代碼來做到這一點:
public bool DoesContain(char[] identifiers, string containingString)
{
return !identifiers.Except(containingString.ToCharArray()).Any();
}
要么:
private char[] identifiers = { /* Your identifiers*/ };
public bool DoesContain(string containingString)
{
return !identifiers.Except(containingString.ToCharArray()).Any();
}
如果傳遞的字符串包含任何指定字符,則這些方法中的任何一個都將返回true。
注意:
Cameron MacFarland 對此問題的解決方案。
看起來您可以進行多個比較和&&,或者使用正則表達式。 我更喜歡前者,這是一個簡單的示例:
arrOfCharacters.All(a.SerialNumber.Contains)
盡管您可能需要使用ToUpperInvariant()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.