4

我在全局、按钮和文本框上有一个字符数组,如何检查 textBox1.Text 中的单词是否包含字符数组中的字母?

char[] letters = { 'a', 'e' };

private void button1_Click(object sender, EventArgs e)
{
    bool containsAnyLetter = textBox1.Text.IndexOfAny(letters) >= 0;

    if (containsAnyLetter == true)
    {
        MessageBox.Show("your word contains a or e");
    }
}
4

3 回答 3

7

您可以这样做来查看字符串是否包含任何字母:

private void button1_Click(object sender, EventArgs e)
{
    bool containsAnyLetter = letters.Any(c => textBox1.Text.Contains(c));
}

或者更简单地说:

private void button1_Click(object sender, EventArgs e)
{
    bool containsAnyLetter = textBox1.Text.IndexOfAny(letters) >= 0;
}
于 2013-07-15T20:39:35.007 回答
2

您可以使用String.IndexOfAny(char[] anyOf)方法(MSDN):

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text.IndexOfAny(letters) >= 0)
    {
        MessageBox.Show("Your word contains a or e.");
    }
}

另外,请记住IndexOfAny 区分大小写a将不匹配A)。

如果要创建不区分大小写的方法,可以创建扩展方法:

public static class StringIndexExtensions
{
    public static bool CaseSensitiveContainsAny(this char[] matchChars, string textToCheck)
    {
        return matchChars.Any(c => textToCheck.IndexOf(
            c.ToString(CultureInfo.InvariantCulture),
            StringComparison.OrdinalIgnoreCase) >= 0);
    }
}

然后您可以执行以下操作:

private void button1_Click(object sender, EventArgs e)
{
    if (letters.CaseSensitiveContainsAny(textBox1.Text))
    {
        MessageBox.Show("Your word contains a or e.");
    }
}
于 2013-07-15T20:41:37.223 回答
0

您可以使用Regex

private void button1_Click(object sender, EventArgs e)
        {
            if (Regex.IsMatch(textBox1.Text, @"(a|e)"))
            {
                MessageBox.Show("your word contains a or e");
            }
        }
于 2013-07-15T20:57:06.587 回答