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

时间:2015-10-19 14:17:54

标签: c# textbox contains

如果我使用:

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

然后,文本框必须包含这两个术语。但是,如何指定文本框以包含其中一个?

4 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:2)

您应该单独检查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)");

答案 2 :(得分:1)

您可以使用

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

答案 3 :(得分:1)

而不是||(或&&)您也可以使用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
}

这是一个忽略此案例的版本,因此如果它Redred无关紧要:

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