确定句子是否包含特定单词

时间:2012-07-04 04:24:47

标签: c# string parsing

我想知道如何在标签中引用一个句子的单词。例如,我有:

label1.text = "books pencil pen ruler";

我想说:“如果label1.text包含单词”pen“,那就做一些”

if (label1.text CONTAINS THE WORD "pen")
{
    // do something
}

我该怎么做?

6 个答案:

答案 0 :(得分:10)

使用Regex字边界:

if (Regex.IsMatch(label1.text, @"\bpen\b"))
    // do something

比检查IndexOf或Splitting更强大。例如。一个简单的IndexOf("pen")将匹配"open"。尝试通过使IndexOf(" pen ")"pen other words"匹配来解决此问题。或者,如果您Split(' '),它将与"This sentence ends in pen."不匹配。正如你所期望的那样,正则表达式的单词边界匹配所有这些。你可以拆分更多的单词边界字符,但是让Regex类的编写者为你工作更容易,而不是试图自己理解单词边界。

答案 1 :(得分:2)

您可以使用string.Split()将该文本分隔为标记,并使用Array.Contains检查该单词是否在列表中。

string sentence = "books pencil pen ruler";
string[] words = sentence.Split(' ');
bool hasFox = words.Contains("pen");

如果要允许更多的分隔符而不仅仅是空格(例如Tab),则可以在使用Split时添加其他分隔符。如果您关心匹配的区分大小写,则可以使用包含IEqualityComparer的Contains重载。

答案 2 :(得分:0)

如果在单词之间预期笔字而不是字符串的开头或结尾。

if(label1.text.IndexOf(" pen ") != -1 )
{
//do something
}

编辑

作为讨论的结果,我发现正则表达式可能是更好的选择

if (Regex.IsMatch(label1.Text, @"\bpen\b"))
{
 //do something
}

答案 3 :(得分:0)

尝试 -

if(label1.text.contains(" pen ")) 
     {
         //do something 
     }

只需在pen之前和之后添加空格即可。

答案 4 :(得分:0)

string s1 = "books pencil pen ruler";
string s2 = "pen";
if(s1.Contains(s2) && s2 != "")
{
// do something
}

答案 5 :(得分:0)

这应该有帮助

string data = label1.Text;
string word = "Pen";

if(!string.IsNullOrEmpty(data))
    if(data.Contains(word))
    {
         // do work here
    }