我想知道如何在标签中引用一个句子的单词。例如,我有:
label1.text = "books pencil pen ruler";
我想说:“如果label1.text包含单词”pen“,那就做一些”:
if (label1.text CONTAINS THE WORD "pen")
{
// do something
}
我该怎么做?
答案 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
}