2017-03-06 86 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

相关问题