C#将文本数组拆分为子数组

时间:2015-05-28 05:14:04

标签: c# arrays string split

我似乎无法在网上找到很多东西:(

对于我的课程,我必须从grocery.txt文件中获取文本并输出发票。

文本文件如下所示:

regular,bread,2.00,2
regular,milk,2.00,3
regular,cereal,4.00,1
fresh,rump steak,11.99,0.8
fresh,apple,4.60,1.00
fresh,cucumber,2.20,0.936
regular,cream,2.20,1
regular,mustard,3.30,1
fresh,carrots,1.79,1.5
regular,tomato sauce,2.95,1
regular,salt,2.80,1
fresh,bananas,4.00,1.2

目前我使用此方法获取文本:

    string[] groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt");

我得到的是一个存储整行的数组(例如" fresh,bananas,4.00,1.2")。 我不知道如何将数组拆分成子数组,甚至是最好的方法来解决这个问题。不幸的是,这个课程的任务对于我们所教授的小材料和我们的时间来说太先进了。我已经花了大约6个小时观看视频,并且在学习高级内容方面做得不是很远。

这就是我想要实现的目标。

一个。名为grocerrItem的类。这个类有属性:     名称和价格     这个类必须有2个构造函数

一个。这个子类是purchaseItem。     这个类有一个整数属性'数量'     其中一种方法findCost,计算物品的成本,包括10%的消费税。     这个公式是价格*数量* 1.1

℃。这个类的子类(purchaseItem),freshItem有     属性重量,双重类型。     这里的findCost方法使用公式:wieght * price,因为它不受商品及服务税的限制。

Groceries.txt包含以下信息:

类型(常规或新鲜),名称,价格,数量/重量 - 取决于常规或新鲜。

**发票应表示为杂货商品(父类)的集合。这可以使用任何容器结构来完成,即数组,列表或集合。然后你将使用迭代

3 个答案:

答案 0 :(得分:2)

您可以使用 String.Split ,它会返回您想要的子数组。

public static void Main()
{
    string[] groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt");

    // now split each line content with comma. It'll return you an array (sub-array)
    foreach (var line in groceryItemsArray)
    {
        string[] itemsInLine = line.Split(',');

       // Do whatevery you want to do with this.
       // e.g. for 1st line itemsInLine array will contains 4 items 
       // "regular","bread","2.00", "2"
    }
}

答案 1 :(得分:2)

您可以使用此代码(我不确定您到底在寻找什么):

/// It's return all text as a single list
var groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt")
      .SelectMany(x => x.Split(new char[]{','} , StringSplitOptions.RemoveEmptyEntries)).ToList() ;

或者如果想要返回,Child List可以使用此代码:

 var groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt").Select(x => 
           new { Child = x.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) }).ToList();

答案 2 :(得分:1)

我真的不明白你想要输出什么,但这里有一些我在你的问题上理解的基本内容:

代码未经过测试

我创建了一个父类:

class GroceryItem 
{
    public string ItemName {get;set;}
    public decimal Price {get;set;}

    public GroceryItem() { }
}

创建一个子类:

class PurchasedItem : GroceryItem
{
    public int Quantity { get;set; }
    public decimal Cost { get;set; }

    public PurchasedItem(string[] item)
    {
        ItemName = item[1];
        Price = decimal.Parse(item[2]);
        Quantity = int.Parse(item[3]);
        FindCost();
    }

    private void FindCost()
    {
        Cost = Price * Quantity * 1.1;
    }
}

使用您的输入获取所有groceryItem,您可以使用foreach循环进行迭代并收集purchaseItems列表。

Main()
{
    string[] groceryItems = System.IO.File.ReadAllLines(@"C:\C\groceries.txt");

    var purchasedItems = new List<PurchasedItem>();
    foreach (var item in groceryItems)
    {
        string[] line = item.Split(',');
        purchasedItems.Add(new PurchasedItem(line));
    }
}

如果您不理解编程的基本概念,那么最好从这个link开始。