C# 将文本数组拆分为子数组
C# Split text array into sub array
我似乎在网上找不到太多:(
对于我的课程,我必须从 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")。
我不知道如何将数组拆分为子数组,甚至不知道最好的方法是什么。不幸的是,对于我们所学的 material 和我们拥有的时间来说,这个课程任务太高级了。我已经花了大约 6 个小时观看视频,并没有深入学习高级内容。
这就是我想要完成的。
一个。 Class 名为 grocerrItem。此 class 具有以下属性:
名称和价格
这个 class 必须有 2 个构造函数
一个。 subclass 这是一个 purchasedItem。
这个 class 有一个整数 属性 'quantity'
它的方法之一 findCost 计算物品的成本,包括 10% 的商品及服务税。
这个的公式是价格 * 数量 * 1.1
C。此 class (purchasedItem) 的子class,freshItem 有
a 属性 weight, double 类型。
此处的 findCost 方法使用 formula:wieght * 价格,因为它不受 GST 约束。
Groceries.txt包含信息如下:
类型(常规或新鲜)、名称、价格,quantity/weight - 取决于是常规还是新鲜。
** 发票应表示为食品杂货的集合(父级 class)。这可以使用任何容器结构来完成,即数组、列表或集合。然后你将使用迭代
您可以只使用 String.Split,其中 returns 您想要的子数组。
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() ;
或者如果想 return 作为子列表可以使用此代码:
var groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt").Select(x =>
new { Child = x.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) }).ToList();
我不太明白你想输出什么,但我对你的问题有一些基本的了解:
(代码未测试)
我创建了一个 parent class:
class GroceryItem
{
public string ItemName {get;set;}
public decimal Price {get;set;}
public GroceryItem() { }
}
并创建一个 child class:
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;
}
}
使用您的输入获取所有 groceryItems,您可以使用 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));
}
}
好吧,如果您不了解编程的基本概念,最好从这里开始 link。
我似乎在网上找不到太多:(
对于我的课程,我必须从 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")。 我不知道如何将数组拆分为子数组,甚至不知道最好的方法是什么。不幸的是,对于我们所学的 material 和我们拥有的时间来说,这个课程任务太高级了。我已经花了大约 6 个小时观看视频,并没有深入学习高级内容。
这就是我想要完成的。
一个。 Class 名为 grocerrItem。此 class 具有以下属性: 名称和价格 这个 class 必须有 2 个构造函数
一个。 subclass 这是一个 purchasedItem。 这个 class 有一个整数 属性 'quantity' 它的方法之一 findCost 计算物品的成本,包括 10% 的商品及服务税。 这个的公式是价格 * 数量 * 1.1
C。此 class (purchasedItem) 的子class,freshItem 有 a 属性 weight, double 类型。 此处的 findCost 方法使用 formula:wieght * 价格,因为它不受 GST 约束。
Groceries.txt包含信息如下:
类型(常规或新鲜)、名称、价格,quantity/weight - 取决于是常规还是新鲜。
** 发票应表示为食品杂货的集合(父级 class)。这可以使用任何容器结构来完成,即数组、列表或集合。然后你将使用迭代
您可以只使用 String.Split,其中 returns 您想要的子数组。
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() ;
或者如果想 return 作为子列表可以使用此代码:
var groceryItemsArray = System.IO.File.ReadAllLines(@"C:\C\groceries.txt").Select(x =>
new { Child = x.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) }).ToList();
我不太明白你想输出什么,但我对你的问题有一些基本的了解:
(代码未测试)
我创建了一个 parent class:
class GroceryItem
{
public string ItemName {get;set;}
public decimal Price {get;set;}
public GroceryItem() { }
}
并创建一个 child class:
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;
}
}
使用您的输入获取所有 groceryItems,您可以使用 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));
}
}
好吧,如果您不了解编程的基本概念,最好从这里开始 link。