我想知道如何在标签中引用句子中的单词。例如,我有:
label1.text = "books pencil pen ruler";
我想说:“如果 label1.text 包含单词“pen”,那么做点什么”:
if (label1.text CONTAINS THE WORD "pen")
{
// do something
}
我该怎么做呢?
使用正则表达式单词边界:
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 类的作者为您完成工作要比尝试自己理解单词边界要容易得多。
您可以使用 string.Split() 将该文本分隔为标记,并使用 Array.Contains 检查该单词是否在列表中。
string sentence = "books pencil pen ruler";
string[] words = sentence.Split(' ');
bool hasFox = words.Contains("pen");
如果您想允许更多的分隔符而不仅仅是空格(例如制表符),您可以在使用拆分时添加额外的分隔符。如果您关心匹配的大小写敏感性,您可以使用包含 IEqualityComparer 的重载。
这应该有帮助
string data = label1.Text;
string word = "Pen";
if(!string.IsNullOrEmpty(data))
if(data.Contains(word))
{
// do work here
}
如果笔字在字之间而不是在字符串的开头或结尾。
if(label1.text.IndexOf(" pen ") != -1 )
{
//do something
}
编辑
作为讨论的结果,我发现Regex 可能是更好的选择。
if (Regex.IsMatch(label1.Text, @"\bpen\b"))
{
//do something
}
尝试 -
if(label1.text.contains(" pen "))
{
//do something
}
只需在 之前和之后添加空格pen
。
string s1 = "books pencil pen ruler";
string s2 = "pen";
if(s1.Contains(s2) && s2 != "")
{
// do something
}