读取每行逗号分隔的单个值c#

时间:2017-05-05 14:10:34

标签: c#

我正在尝试读取一个文本文件,并在多行上导入每行上用逗号分隔的每个值。我已经在VB.Net中完成了它,但我似乎无法想象如何在C#中完成它。

我的文本文件如下所示:

12345678,你闻到,1,0.50

73432433,听,5,9

正如您在每一行中所看到的,有4个值以逗号分隔。 如何在程序中将每个单独的值设置为数组?并能够导入下一行。 我试过这个,看看我是否能看到每个值。

        string[] lines = File.ReadAllLines("stock.txt");
        foreach (string line in lines )
        {
            string[] col = line.Split(',');
            Console.WriteLine(col[0]);
            Console.WriteLine(col[1]);
            Console.WriteLine(col[2]);
            Console.WriteLine(col[3]);
        }

但这只给了我一行的价值。 这是我试图复制的VB.Net代码:

        FileOpen(1, "stockfile.txt", OpenMode.Input)

    Do While Not EOF(1)

        Input(1, GTIN)
        Input(1, GTIN_INFO)
        Input(1, PRICE)

        stock(No).GTIN = GTIN
        stock(No).GTIN_INFO = GTIN_INFO
        stock(No).PRICE = PRICE

        No = No + 1

    Loop

    FileClose(1)

在上面的示例中,Input每个逗号导入,然后我将每个值设置为数组内的值。我怎么能在C#中做到这一点? 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

我将如何复制你的VB代码:

namespace so43807152
{
    struct Record
    {
        public string GTIN;
        public string GTIN_INFO;
        public string WHATEVER;
        public decimal PRICE;
    }

    class Program
    {
        static void Main()
        {
            var stock = new List<Record>();

            string[] lines = File.ReadAllLines("stock.txt");
            foreach (var line in lines)
            {
                var col = line.Split(',');
                for (int i = 0; i < col.Length; i += 4)
                {
                    var record = new Record
                    {
                        GTIN = col[i],
                        GTIN_INFO = col[i + 1],
                        WHATEVER = col[i + 2],
                        PRICE = decimal.Parse(col[i + 3])
                    };
                    stock.Add(record);
                }
            }
        }
    }
}

通过这种方式,逗号和换行符是否用于记录分隔并不重要。当GTIN_INFO可以包含逗号时也不起作用(对于VB版本也是如此)。

(我考虑了从三场项目到四场项目的明显变化,现在知道第三列实际上是什么。)

LINQ爱好者会把大部分内容打包成一行。

答案 1 :(得分:0)

我使用您的示例文件做了一个小LINQPad查询,因此您可以看到另一个选项。

void Main()
{
    var filename = @"C:\Documents\SampleText.txt";

    var stocks = new List<Record>();    
    using (TextReader reader = File.OpenText(filename))
    {
        while (reader.Peek() > -1)
        {           
            var values = reader.ReadLine().Split(',');
            stocks.Add(new Record
            {
                GTIN = values[0],
                GTIN_INFO = values[1],
                WHATEVER = values[2],
                PRICE = values[3]
            });
        }
    }
    stocks.Dump();
}

// Define other methods and classes here
class Record
{
    public string GTIN { get; set; }
    public string GTIN_INFO { get; set; }
    public string WHATEVER { get; set; }
    public string PRICE { get; set; }
}

以下是我得到的结果。

enter image description here

如果有帮助,请告诉我。