使用int选择器C#读取字符串数组

问题描述

我有以下代码,通过粘贴的代码创建一个名为“ Lines”的字符串数组,并将“ Lines”字符串中的每个数组的项目添加到listBox中。

string Temp = Clipboard.GetText();
int count = 1;
for (int i = 0; i < Temp.Length; i++)
{
    if (Temp[i] == '\n') count++;
}
string[] lines = Temp.Split(
new[] { Environment.NewLine },StringSplitOptions.None
);
int reader = 1;
int repeat = count;
for (int i = 0; i < repeat; i++)
{
    ListBox.Items.Add(lines[reader]);
    reader = reader + 1;
}

在Visual Studio中使用此代码时,一切似乎都很好,

但是当我运行此代码时,出现以下错误:

System.IndexOutOfRangeException;

这意味着数组索引超出范围。当我更换

ListBox.Items.Add(lines[reader]); 

使用

ListBox.Items.Add(lines[1]); 

例如,它工作正常。这意味着问题来自“读者” int,但我似乎找不到解决此问题的方法。

我该如何解决?

解决方法

问题可能是您在1处开始您的计数器变量,然后将其用作数组的索引,但是在c#中数组是从零开始的,因此您实际上是在跳过第一个项目0,然后尝试访问超出数组范围的项目。

计算\n个字符并期望它等于Environment.NewLine个实例的数量也是不准确的。

似乎您还有很多不必要的变量可以跟踪计数。相反,您的代码可以简化为:

string temp = Clipboard.GetText();
        
string[] lines = temp.Split(new[] {Environment.NewLine},StringSplitOptions.None);

for (int i = 0; i < lines.Length; i++)
{
    ListBox.Items.Add(lines[i]);
}

或者,您可以只一行完成所有操作:

ListBox.Items.AddRange(
    Clipboard.GetText().Split(new[] {Environment.NewLine},StringSplitOptions.None));

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...