簡體   English   中英

C#將文本數組拆分為子數組

[英]C# Split text array into sub array

我似乎在網上找不到很多東西:(

對於我的課程,我必須從雜貨店.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個小時來觀看視頻,並且對高級知識的學習還不太深入。

這就是我想要完成的。

A.名為grocerrItem的類。 此類具有屬性:此類的名稱和價格必須具有2個構造函數

A.的子類是PurchaseItem。 此類具有整數屬性“ quantity”,其方法之一為findCost,用於計算商品成本,包括10%的GST。 公式是價格*數量* 1.1

C.此類的一個子類(purchasedItem),freshItem具有屬性權重,為雙精度類型。 此處的findCost方法使用公式:wieght *價格,因為它不受GST的影響。

Groceries.txt包含以下信息:

類型(常規或新鮮),名稱,價格,數量/重量-取決於常規或新鮮。

**發票應表示為雜貨的集合(父類)。 可以使用任何容器結構(即數組,列表或集合)來完成此操作。 然后,您將使用迭代

您可以只使用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"
    }
}

您可以使用以下代碼(我不確定您到底在尋找什么):

/// 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() ;

或者,如果要作為子列表返回,可以使用以下代碼:

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

我不太了解您要輸出的內容,但這是我對您的問題了解的一些基本知識:

代碼未經測試

我創建了一個父類:

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

使用您的輸入來獲取所有雜貨項目,您可以使用foreach循環進行迭代並收集PurchasedItems的列表。

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

好吧,如果您不了解編程的基本概念,那么最好從此鏈接開始。

暫無
暫無

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

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