首页 > 解决方案 > 在可预测的错误发生之前停止循环

问题描述

所以我需要计算文本框中的行数,为此我使用:

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,所以我只是将整个事情放在 try catch 中,但我觉得会有更简单的方法来做到这一点?

标签: c#wpfsplittextbox

解决方案


我认为你可能有很多复杂的事情。
String.Split方法有多个重载,其中一些将枚举成员作为参数StringSplitOptions- 其中一个成员被调用None,另一个被调用RemoveEmptyEntries- 据我所知,你需要的只是:

var textBody = TextBox_Text.Text.Split(
    new char[] {'\n'}, 
    StringSplitOptions.RemoveEmptyEntries);

推荐阅读