簡體   English   中英

從文本文件中寫入文本以列出C#Windows Phone

[英]Write text from text file to list c# windows phone

我是初學者,我不知道如何從文本文件中寫出一些字符串。 我的意思是我有一個文件:

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

但是出了點問題。 我知道應該只記住它,但是我不太了解語言,所以我不會寫。

總之,我需要將此文本寫入多維數組,例如array [0] [0] = A array [0] [1] = B array [1] [0] = C array [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 s=>s.Split(' ')為所有空格並返回字符串數組。

.ToArray()接受由.Select創建的字符串數組的集合,並.ToArray()創建一個數組,因此可以得到數組數組。

您可以像這樣訪問結果中的項目...

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循環中進行拆分,例如

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行進行比較。 您將需要某種循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM