Остановите цикл до того, как произойдет предсказуемая ошибка - PullRequest
0 голосов
/ 29 октября 2018

Так что мне нужно посчитать строки в текстовом поле, для этого я использую:

if (subject.Length <= 20)
{
    bool moreLines = true;
    int onLine = 2;
    int count = 0;

    while (moreLines)
    {
        textBody[count] = TextBox_Text.Text.Split('\n')[onLine];
        Console.WriteLine("Line saved: " + textBody[count]);

        onLine++;
        count++;

        try
        {
            if (TextBox_Text.Text.Split('\n')[onLine] == null)
            {

            }
        }
        catch (IndexOutOfRangeException)
        {
            moreLines = false;
        }

    }

    return true;
}

Я вставляю разделенные строки в массив textBody[], но как только я подхожу к последним строкам, где нет текста, я хочу остановить цикл. Я попытался сделать оператор if, который проверяет, является ли следующая строка нулевой, и если да, остановить цикл. Тем не менее, я продолжал получать исключение IndexOutOfRangeException, поэтому я просто включил все это в попытку, но я чувствую, что есть более простой способ сделать это?

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Я думаю, что у вас могут быть слишком сложные вещи.
Метод String.Split имеет несколько перегрузок, некоторые из них принимают в качестве аргумента член перечисления StringSplitOptions - один из его членов называется None, а другой - RemoveEmptyEntries - насколько я понимаю все, что вам нужно, это:

var textBody = TextBox_Text.Text.Split(
    new char[] {'\n'}, 
    StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 29 октября 2018

, поэтому я просто использовал свойство LineCount и произвел сравнение с onLine

if (TextBox_Text.LineCount >= onLine)
{
    moreLines = false;
}
0 голосов
/ 29 октября 2018

Простой способ сделать это - использовать следующее:

TextBox_Text.Text.Split('\n').Length

Свойство Length возвращает длину массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...