gpt4 book ai didi

c# - 如何计算存储在包含多个分隔符的文件中的数字的出现次数?

转载 作者:行者123 更新时间:2023-11-30 21:55:43 25 4
gpt4 key购买 nike

这是我在文件中的输入存储:

50|Carbon|Mercury|P:4;P:00;P:1
90|Oxygen|Mars|P:10;P:4;P:00
90|Serium|Jupiter|P:4;P:16;P:10
85|Hydrogen|Saturn|P:00;P:10;P:4

现在我将使用我的第一行 P:4 然后是下一个 P:00 然后下一个同样明智并且想要计算每隔一行的出现次数所以 预期输出将是:

P:4 3(found in 2nd row,3rd row,4th row(last cell))

P:00 2 (found on 2nd row,4th row)

P:1 0 (no occurences are there so)

P:10 1

P:16 0

.....

同样,我想打印每个比例的出现情况。

到目前为止,我已经成功地逐行拆分并像这样存储在我的类文件对象中:

public class Planets
{
//My rest fields
public string ProportionConcat { get; set; }
public List<proportion> proportion { get; set; }
}

public class proportion
{
public int Number { get; set; }
}

我已经像下面这样填充了我的行星对象,最后我的行星对象数据列表是这样的:

List<Planets> Planets = new List<Planets>();
Planets[0]:
{
Number:50
name: Carbon
object:Mercury
ProportionConcat:P:4;P:00;P:1
proportion[0]:
{
Number:4
},
proportion[1]:
{
Number:00
},
proportion[2]:
{
Number:1
}
}

等等......

我知道我可以循环并执行搜索和计数,但是需要 2 到 3 个循环并且代码会有点困惑,所以我需要一些更好的代码来执行此操作。

现在我如何在我的行星列表对象中搜索每一个并计算每个其他比例??

最佳答案

好吧,如果你已经解析了比例,你可以为输出数据创建新的结构:

// Class to storage result
public class Values
{
public int Count; // count of proportion entry.
public readonly HashSet<int> Rows = new HashSet<int>(); //list with rows numbers.

/// <summary> Add new proportion</summary>
/// <param name="rowNumber">Number of row, where proportion entries</param>
public void Increment(int rowNumber)
{
++Count; // increase count of proportions entries
Rows.Add(rowNumber); // add number of row, where proportion entry
}
}

并使用这段代码来填充它。我不确定它是否“困惑”,也没有看到使用 LINQ 使代码复杂化的必要性。你怎么看?

   var result = new Dictionary<int, Values>();   // create dictionary, where we will storage our results. keys is proportion. values - information about how often this proportion entries and rows, where this proportion entry
for (var i = 0; i < Planets.Count; i++) // we use for instead of foreach for finding row number. i == row number
{
var planet = Planets[i];
foreach (var proportion in planet.proportion)
{
if (!result.ContainsKey(proportion.Number)) // if our result dictionary doesn't contain proportion
result.Add(proportion.Number, new Values()); // we add it to dictionary and initialize our result class for this proportion

result[proportion.Number].Increment(i); // increment count of entries and add row number
}
}

关于c# - 如何计算存储在包含多个分隔符的文件中的数字的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com