使用 int 选择器 C# 读取字符串数组
Read string array with an int selector C#
我有以下代码从粘贴的代码创建一个名为“Lines”的字符串数组,并将“Lines”字符串中的每个数组添加一个项目到列表框中。
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]);
例如,它工作正常。这意味着问题来自“reader”整数,但我似乎找不到解决它的方法。
我该如何解决这个问题?
问题很可能是您从 1
开始计数器变量,然后将其用作数组的索引,但数组在 c# 中是 zero-based,因此您实际上是在跳过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));
我有以下代码从粘贴的代码创建一个名为“Lines”的字符串数组,并将“Lines”字符串中的每个数组添加一个项目到列表框中。
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]);
例如,它工作正常。这意味着问题来自“reader”整数,但我似乎找不到解决它的方法。
我该如何解决这个问题?
问题很可能是您从 1
开始计数器变量,然后将其用作数组的索引,但数组在 c# 中是 zero-based,因此您实际上是在跳过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));