如何在 Text.Contains 中指定 "OR",C#?

How to specify "OR" in Text.Contains, C#?

如果我使用:

if (MainTextBox.Text.Contains("red" + "blue"))

那么文本框必须同时包含这两个词。但是我怎样才能指定文本框包含其中之一呢?

如果你想检查文本框是否包含红色or蓝色,你可以写

if (MainTextBox.Text.Contains("red") || MainTextBox.Text.Contains("blue"))

否则,如果文本框必须同时包含红色 and 蓝色,您可以写

if (MainTextBox.Text.Contains("red") && MainTextBox.Text.Contains("blue"))

您应该分别检查 redblue

string text = MainTextBox.Text;
bool containsAny = text.Contains("red") || text.Contains("blue");
bool containsBoth = text.Contains("red") && text.Contains("blue");

或者您可以使用正则表达式

bool containsAny = Regex.IsMatch(text, "(red|blue)");
bool containsBoth = Regex.IsMatch(text, "(?=.*red)(?=.*blue)");

您可以使用

if (MainTextBox.Text.Contains("red") || MainTextBox.Text.Contains("blue")) 

您还可以使用 String.Contains 和 LINQ:

而不是 ||(或 &&
string[] itemsToContain = { "red", "blue" };
if (itemsToContain.All(MainTextBox.Text.Contains))
{
    // here the TextBox contains both terms as a substring
}
if (itemsToContain.Any(MainTextBox.Text.Contains))
{
    // here the TextBox contains  one of both as a substring
}

这是一个忽略大小写的版本,所以不管是 Red 还是 red:

if (itemsToContain.All(s => MainTextBox.Text.IndexOf(s, StringComparison.CurrentCultureIgnoreCase) >= 0))
{
    // here the TextBox contains both terms as a substring ignoring the case
}