我是初学者,我不知道如何从文本文件中写入列出一些字符串。我的意思是我有一个文件:
A B
C D
E F
G H
...
我希望将其写入列表,但我不知道如何,也许它很简单,但我尝试了一些东西而且它不起作用。 现在我有了
List<List<string>> listaKolumn = new List<List<string>>();
var str = Application.GetResourceStream(new Uri("wzor.txt", UriKind.Relative));
StreamReader sreader = new StreamReader(str.Stream);
int x = 0;
while (!sreader.EndOfStream)
{
foreach (string k in sreader.ReadToEnd().Split(new char[] { ' ' }))
{
int j = 0;
foreach (string l in k.Split(new char[] {' '}))
{
if (listaKolumn.Count < k.Split(new char[] { ' '}).Length)
{
listaKolumn.Add(new List<string>());
}
//double temp2;
listaKolumn[j].Add(l);
j++;
}
}
}
但是出了点问题。我知道它应该只是在考虑,但我不太懂语言,我不能写它。
IN SHORT我需要这个文本,如数组[0] [0] =数组[0] [1] = B数组[1] [0] = C数组[1] [1] =多维数组D等等
答案 0 :(得分:3)
这是一个传入问题中显示的文本文件并返回多维数组的方法。
public string[][] MultiArrayFromTextFile(string filePath)
{
return File.ReadLines(filePath).Select(s => s.Split(' ')).ToArray();
}
File.ReadLines(filePath)返回文本文件
中所有行的集合.Select是一个带函数的扩展方法。
s=>s.Split(' ')
是传递给.Select
的函数,它将字符串s
拆分为所有空格并返回一个字符串数组。
.ToArray()
获取由.Select
创建的字符串数组的集合,并从中创建一个数组,以便获得数组数组。
您可以像这样访问结果中的项目......
Console.WriteLine(results[1][1]); // returns 'D' ... so 2nd item of 2nd array
答案 1 :(得分:0)
如果我理解你,这应该可以解决问题 var listaKolumn = new List();
var sreader = new StreamReader(@"f:\wzor.txt");
string line;
while ((line = sreader.ReadLine())!=null)
{
listaKolumn.Add(line);
}
您似乎没有任何理由拥有列表列表(列表&gt;) - 这会让您获得列表。
如果需要拆分空格,可以在while循环中进行拆分,例如
foreach (var parts in line.Split(' '))
{
listaKolumn.Add(parts);
}
或者使用LINQ
listaKolumn.AddRange(line.Split(' '));
希望这会有所帮助......
答案 2 :(得分:0)
好的 - 然后我没理解它。找到了一种更聪明的方法来将线条读入集合中。这应该至少让你非常接近:)
private static int LineCompare(string filepath1, string filepath2)
{
var result = 0;
var list = File.ReadLines(filepath1).ToArray();
var list2 = File.ReadLines(filepath2).ToArray();
for (var i = 0; i < list.Length; i++)
{
if (list[i].Equals(list2[i]))
result++;
}
return result;
}
或修剪版本:
private static int LineCompare(string filepath1, string filepath2)
{
var list = File.ReadLines(filepath1).ToArray();
var list2 = File.ReadLines(filepath2).ToArray();
return list.Where((t, i) => t.Equals(list2[i])).Count();
}
这当然会比较具有相同索引的行,因此如果需要将file1中的第5行与file2中的第2行进行比较。你需要某种循环。