将文本文本写入c#windows phone列表

时间:2014-11-19 13:13:47

标签: c# list listbox windows-phone streamreader

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

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等等

3 个答案:

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