[英]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.