检查文本框中是否包含任何字符

4

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

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");
    }
}
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;
}

1
如果你需要它包含数组中的所有字母,你可以使用"All"而不是"Any"。 - Caleb
错误1:字段初始化器不能引用非静态字段、方法或属性“WindowsFormsApplication4.Form1.letters” C:\Users\bilgisayar\Desktop\WindowsFormsApplication4\WindowsFormsApplication4\Form1.cs 22行34列 WindowsFormsApplication4 - Ali Çarıkçıoğlu
@HakanErbaslar 你需要在你的方法内部编写那段代码。请查看我的更新答案。 - p.s.w.g

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 区分大小写aA 不匹配)。

如果您想创建一个不区分大小写的方法,可以创建一个扩展方法:

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.");
    }
}

0

你可以使用 正则表达式

private void button1_Click(object sender, EventArgs e)
        {
            if (Regex.IsMatch(textBox1.Text, @"(a|e)"))
            {
                MessageBox.Show("your word contains a or e");
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接