c# - 在可预测的错误发生之前停止循环
问题描述
所以我需要计算文本框中的行数,为此我使用:
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 中,但我觉得会有更简单的方法来做到这一点?
解决方案
我认为你可能有很多复杂的事情。
该String.Split
方法有多个重载,其中一些将枚举成员作为参数StringSplitOptions
- 其中一个成员被调用None
,另一个被调用RemoveEmptyEntries
- 据我所知,你需要的只是:
var textBody = TextBox_Text.Text.Split(
new char[] {'\n'},
StringSplitOptions.RemoveEmptyEntries);
推荐阅读
- apache-kafka - 卡夫卡消费者收到很少(不是全部)旧消息(之前已经处理过)
- javascript - 在一页上禁用后重新启用 Tab 键
- twitter-bootstrap - 如何在 laravel npm install 中将引导程序链接到我的刀片文件?
- c++ - 访问时 Char* 数据更改
- sass - Sass mixin 关键帧并包含基于供应商的属性
- php - 如何让 SoapClient 在使用 nginx 的服务器上工作
- android - 如何获取当前位置数据?
- angular - rxjs 6管道在Angular 6中不起作用
- android - FirebaseAuth.getCurrentUser() 返回空值
- python - 在pyopencl中编写可以转换类型的函数