2010-10-11 113 views
30

我有兩個字符串:字符串比較C# - 全字匹配

string1 = "theater is small"; 
string2 = "The small thing in the world"; 

我需要檢查天氣字符串「的」出現在字符串或沒有。
我可以使用包含功能,但它可以做一個完整的單詞匹配?即它不應該與string1的「劇院」相匹配!

回答

0

您可以改爲使用正則表達式。這樣你就可以指定你最後只需要空間或行尾。

59

最簡單的解決方案是使用正則表達式和單詞邊界定界符\b:如果你想找到不匹配的資本

bool result = Regex.IsMatch(text, "\\bthe\\b"); 

,或者,

bool result = Regex.IsMatch(text, "\\bthe\\b", RegexOptions.IgnoreCase); 

using System.Text.RegularExpressons。)

或者,您可以將文本分割爲單個單詞並搜索結果數組。然而,這並不總是微不足道的,因爲它不足以分割空白;這會忽略所有標點併產生錯誤的結果。解決方案是再次使用正則表達式,即Regex.Split

+3

您可能還需要指定RegexOptions.IgnoreCase – 2010-10-11 08:40:55

+1

你的參數是向後詞添加的空間!輸入是第一個,然後是匹配的模式。 – 2012-06-14 14:30:45

+0

它通過了「世界上的小事」也是我的要求是它應該返回false。 – 2016-07-15 09:24:24

12

使用方法Regex.IsMatch使用\bthe\b,\b表示字邊界定界符。

// false 
bool string1Matched = Regex.IsMatch(string1, @"\bthe\b", RegexOptions.IgnoreCase); 

// true 
bool string2Matched = Regex.IsMatch(string2, @"\bthe\b", RegexOptions.IgnoreCase); 
5
str.Split().Contains(word); 

char[] separators = { '\n', ',', '.', ' ' }; // add your own 
str.Split(separators).Contains(word); 
0

您便可以在您檢查

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – aldanux 2014-07-22 12:39:05

+0

這將經常工作,但不是如果,例如,您搜索字符串的「the」和字符串*結束*與「the」在:「這不會找到」 – mtijn 2014-07-22 12:50:08

+0

@aldanux抱歉,但這*是*這個問題的答案,只是不是一個很好的,也是一個很晚的...... – mtijn 2014-07-22 12:54:19