gpt4 book ai didi

c# - 只能通过for循环迭代显示数组

转载 作者:太空狗 更新时间:2023-10-29 23:10:00 25 4
gpt4 key购买 nike

你好,我正在尝试制作一个下载文件的 C# 程序,但我在使用数组时遇到了问题。

我将它拆分为下载文本并将其放入一个 2 级锯齿状数组 (string[][])。

现在我用 | 把文本行分开了char 所以每一行的格式如下:{filename}|{filedescription}|{filehttppath}|{previewimagepath}|{length}|{source}

当我使用简短的测试文本将其放入文本框中时,它在文本框中显示正常。

IE:类似test|test|test|test|test|test的字符串

但是,如果我将实际用于程序的真实字符串放入 DL 文件,那么我获取要显示的字符串的唯一方法是使用 for 或 foreach 循环遍历它。如果我尝试使用索引访问数据,我会收到索引丢失错误。 (即数组[0])

所以这是获取要显示的数组的代码:

public Form2(string[][] textList, string path)
{
InitializeComponent();
textBox1.Text = textBox1.Text + path + Environment.NewLine;
WebClient downloader = new WebClient();
foreach (string[] i in textList)
{
for(int j=0;j<i.Length;j++)
{
textBox1.Text = textBox1.Text + i[j] + Environment.NewLine + @"\\newline" + Environment.NewLine;
}
}
}

然后这是给出索引缺失错误的代码:

public Form2(string[][] textList, string path)
{
InitializeComponent();
textBox1.Text = textBox1.Text + path + Environment.NewLine;
WebClient downloader = new WebClient();
foreach (string[] i in textList)
{
textBox1.Text = textBox1.Text + i[0] + Environment.NewLine;
textBox1.Text = textBox1.Text + i[1] + Environment.NewLine;
textBox1.Text = textBox1.Text + i[2] + Environment.NewLine;
textBox1.Text = textBox1.Text + i[3] + Environment.NewLine;
textBox1.Text = textBox1.Text + i[4] + Environment.NewLine;
textBox1.Text = textBox1.Text + i[5] + Environment.NewLine;
}
}

我不明白为什么我可以通过 for 循环而不是直接访问他们的数据,这对我来说没有任何意义。

另外,这里是生成数组的代码:

public String[][] finalList(string[] FileList)
{
String[][] FinalArray = new String[FileList.Length][];
for (int i = 0; i<FinalArray.Length;i++)
{
string[] fileStuff = FileList[i].Split(new char[] {'|'});
FinalArray[i] = fileStuff;
}
return FinalArray;
}

最佳答案

在您的第一个示例中,您使用每个内部数组的实际长度进行串联。在你的第二个例子中,你被硬编码为相同的长度,但你在介绍中说它是一个锯齿状的数组。

你能展示一下你输入的文本是什么样子的吗?

您在第一个和第二个示例中没有进行相同的连接,因此生成的字符串非常不同。

        first = "\r\n Crazy Video\r\n\\\\newline\r\nThis Video is absolutly crazy!\r\n\\\\newline\r\nhtt://fakeurl.fake/vidfolder/video.flv\r\n\\\\newline\r\nhtt://fakeurl.fake/imgfolder/img.j‌​pg\r\n\\\\newline\r\n300\r\n\\\\newline\r\nhtt://fakeurl.fake \r\n\\\\newline\r\n"

second = "\r\n Crazy Video\r\nThis Video is absolutly crazy!\r\nhtt://fakeurl.fake/vidfolder/video.flv\r\nhtt://fakeurl.fake/imgfolder/img.j‌​pg\r\n300\r\nhtt://fakeurl.fake \r\n"


using System;
using NUnit.Framework;

namespace ClassLibrary5
{
public class Class1
{
[Test]
public void test()
{
var temp = new[]
{
" Crazy Video|This Video is absolutly crazy!|htt://fakeurl.fake/vidfolder/video.flv|htt://fakeurl.fake/imgfolder/img.j‌​pg|300|htt://fakeurl.fake "
};
var final = finalList(temp);
var first = Form1(final, "path");
var second = Form2(final, "path");
Assert.IsTrue(first.CompareTo(second) == 0);
}

public string Form1(string[][] textList, string path)
{
string textString = path + Environment.NewLine;

foreach (string[] i in textList)
{
for (int j = 0; j < i.Length; j++)
{
textString = textString + i[j] + Environment.NewLine + @"\\newline" + Environment.NewLine;
}
}
return textString;
}

public string Form2(string[][] textList, string path)
{
string textString = path + Environment.NewLine;

foreach (string[] i in textList)
{
textString = textString + i[0] + Environment.NewLine;
textString = textString + i[1] + Environment.NewLine;
textString = textString + i[2] + Environment.NewLine;
textString = textString + i[3] + Environment.NewLine;
textString = textString + i[4] + Environment.NewLine;
textString = textString + i[5] + Environment.NewLine;
}
return textString;
}

public String[][] finalList(string[] FileList)
{
String[][] FinalArray = new String[FileList.Length][];
for (int i = 0; i < FinalArray.Length; i++)
{
string[] fileStuff = FileList[i].Split(new char[] {'|'});
FinalArray[i] = fileStuff;
}
return FinalArray;
}
}
}

关于c# - 只能通过for循环迭代显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com