6

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

label1.text = "books pencil pen ruler";

我想说:“如果 label1.text 包含单词“pen”,那么做点什么”

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

我该怎么做呢?

4

6 回答 6

13

使用正则表达式单词边界:

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 类的作者为您完成工作要比尝试自己理解单词边界要容易得多。

于 2012-07-04T04:29:48.903 回答
2

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

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

如果您想允许更多的分隔符而不仅仅是空格(例如制表符),您可以在使用拆分时添加额外的分隔符。如果您关心匹配的大小写敏感性,您可以使用包含 IEqualityComparer 的重载。

于 2012-07-04T04:27:32.297 回答
0

这应该有帮助

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

if(!string.IsNullOrEmpty(data))
    if(data.Contains(word))
    {
         // do work here
    }
于 2012-07-04T05:52:10.840 回答
0

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

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

编辑

作为讨论的结果,我发现Regex 可能是更好的选择

if (Regex.IsMatch(label1.Text, @"\bpen\b"))
{
 //do something
}
于 2012-07-04T04:27:50.103 回答
0

尝试 -

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

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

于 2012-07-04T04:28:48.013 回答
0
string s1 = "books pencil pen ruler";
string s2 = "pen";
if(s1.Contains(s2) && s2 != "")
{
// do something
}
于 2012-07-04T04:30:15.233 回答