从文本文件写入文本以列出 c# Windows Phone

本文关键字:文本 Phone Windows 文件 | 更新日期: 2023-09-27 18:31:13

我是初学者,我不知道如何从文本文件写入以列出一些字符串。我的意思是我有一个文件:

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++;
                }
            }
}

但是有些不对劲。 我知道它应该怎么想,但我不太懂语言,我不会写它。

简而言之,我需要这个文本进入多维数组,例如数组[0][0] = 数组

从文本文件写入文本以列出 c# Windows Phone

[0][1]=B 数组[1][0] =C 数组[1][1] = D 等等

这是一个传入您在问题中显示的文本文件并返回多维数组的方法。

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
如果我

理解正确,这应该可以解决问题var listaKolumn = new List();

        var sreader = new StreamReader(@"f:'wzor.txt");
        string line;
        while ((line = sreader.ReadLine())!=null)
        {
            listaKolumn.Add(line);
        }

似乎没有任何理由让你有一个列表列表(List>) - 这会给你列表。

如果您需要拆分空格,您可以在 while-loop 中执行此操作,例如

foreach (var parts in line.Split(' '))
                {
                    listaKolumn.Add(parts);    
                }

或者通过使用 LINQ

listaKolumn.AddRange(line.Split(' '));

希望这有帮助...

好吧 - 那我理解不对。找到了一种更智能的方法来将行读入集合。这应该让你至少非常接近:)

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 行进行比较。你需要某种循环。