Как узнать, является ли TextBox.Text одним из слов в текстовом файле - PullRequest
1 голос
/ 23 марта 2019

Я хочу посмотреть, является ли текст в текстовом поле одним из слов в загруженном текстовом файле.

Единственное, что я знаю, это то, что я могу использовать if (words.Contains(txtBox.Text), но он найдет любую букву в текстовом файле и будет действовать как слово в файле.

        private void btnLogin_Click(object sender, EventArgs e)
        {
            string accessKeys;

            WebClient wc = new WebClient();
            accessKeys = wc.DownloadString("http://LinkToTextFile.txt");
            if (txtBxAccessKey.Text.Contains(" ") || txtBxAccessKey.Text == string.Empty)
            {
                MessageBox.Show("Empty");
            }
            else if (accessKeys.Contains(txtBxAccessKey.Text)) //This is what I need to change to work as intended
            {
                this.Hide();
                Loader frmLoader = new Loader();
                frmLoader.ShowDialog();
            }
            else
            {
                MessageBox.Show("Access Key Not Found");
            }

1 Ответ

1 голос
/ 23 марта 2019

Вот решение, в котором выполняется сравнение с целым словом в файле (разделенным пробелом).

  1. Загрузить данные файла в виде строки
  2. Разделить строку на массив строк, разделенных пробелами (пробел, новая строка, табуляция)
  3. Проверьте, является ли txtBxAccessKey.Text одним из элементов массива

Пожалуйста, отметьте несколько заметок, которые я сделал как комментарии к коду (правильная обработка ошибок, сравнение без учета регистра). Я также исправил сравнение пустых строк как более элегантное. Этот фрагмент использует Contains -метод, найденный в System.Linq -namespace.

using System.Linq;

private void btnLogin_Click(object sender, EventArgs e)
{
    WebClient wc = new WebClient();
    var fileContents = wc.DownloadString("http://LinkToTextFile.txt");
    //Todo 1: Error handling, check for empty!
    //Todo 2: Handle case in-sensitive comparison!
    string[] lines = fileContents.Split(null);

    if (string.IsNullOrEmpty(txtBxAccessKey.Text))
    {
        MessageBox.Show("Empty");
        return;
    }
    else if (lines.Contains(txtBxAccessKey.Text))
    {
        this.Hide();
        Loader frmLoader = new Loader();
        frmLoader.ShowDialog();
    }
    else
    {
        MessageBox.Show("Access Key Not Found");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...