2017-03-06 85 views
0

我想檢查一個字符串是否在C#中以任意順序包含字。我如何用簡單的if語句來做到這一點。看下面的例子:如何確定一個字符串是否包含來自另一個字符串的字

string a = "PT. DOWELL ANADRILL SCHLUMBERGER"; 
string b = "ANADRILL DOWELL"; 

if(a.Contains(b)) { 
    MessageBox.Show("true"); 
} else { 
    // the if always evaluates to false 
    MessageBox.Show("false"); 
} 
+0

所以,你想知道'a'是否包含'b'中的任何單詞,或'b'中的所有單詞,但是以任何順序? – juharr

+0

string.Contains()在您的字符串「a」中搜索「ANADRILL DOWELL」的任何實例,它不在那裏,對吧?這就是爲什麼它總是假的。 – jomsk1e

+0

「ANADRILL DOWELL」不等於「DOWELL ANADRILL」。你將不得不將句子拆分爲單詞集合並從那裏開始。 – LarsTech

回答

5

如果你想知道,如果a包含任何字b然後

if(b.Split().Any(x => a.Contains(x))) 

或者,如果你想a包含在b

​​ 所有的話

請注意既不確定b中的單詞不是a中的單詞,如

a = "Once before"; 
b = "be"; 

而且這只是分裂詞語的b上的空白,所以如果有標點符號要忽略像

a = "I like turtles"; 
b = "like."; 
+0

很好的邏輯。這是一個很好的答案:D ..謝謝maste +1 –

3

這裏是另一種方式,如果你知道有它不會工作在每個單詞之間檢查一個空格。

if(b.Split(' ').Any(a.Contains)) 
+0

'Split'的默認值是空格,所以唯一的原因是如果你不想在其他類型的空格上分割。使用方法組而不是lambda是縮短代碼的可接受方法。 – juharr

相關問題