C# 需要逻辑来添加计数

C# 需要逻辑来添加计数,c#,regex,C#,Regex,我有以下三组数据 EUR5-002,EUR10-000, EUR20-001,EUR50-001, EUR100-001,EUR200-000, EUR500-000 EUR5-000,EUR10-000, EUR20-002,EUR50-001, EUR100-001,EUR200-000, EUR500-000 EUR5-001,EUR10-001, EUR20-002,EUR50-001, EUR100-002,EUR200-003, EUR500-000 此处欧元-Currency

我有以下三组数据

EUR5-002,EUR10-000,
EUR20-001,EUR50-001,
EUR100-001,EUR200-000,
EUR500-000

EUR5-000,EUR10-000,
EUR20-002,EUR50-001,
EUR100-001,EUR200-000,
EUR500-000

EUR5-001,EUR10-001,
EUR20-002,EUR50-001,
EUR100-002,EUR200-003,
EUR500-000
此处欧元-CurrencyID和5,10,20,50100200500为货币值。“—”之后的数值为相应面额的票据编号。(EUR5-002,指2张5欧元的票据)

在我的代码中,我将每个集合作为字符串读取并添加到列表中

我需要一个C#中的逻辑,使用正则表达式或其他方法添加所有3组数据中的每个面额计数

根据以上数据,我必须得到如下输出

EUR5-003,EUR10-001,
EUR20-005,EUR50-003,
EUR100-004,EUR200-003,
EUR500-000
你可以这样做

//limit is the highest value of currency
int temp=0;
for(int x=1;x<=limit;x++,temp=0)
{
if((temp=parseDenomination(x,input))!=0)
     output+=","+"EUR"+x+"-"+temp;
}
//output has your desired output
//limit是货币的最高值
内部温度=0;
for(int x=1;xint.Parse(x.Groups[0].Value))
托利斯先生()
.Sum();
}

代码不会处理由错误输入格式引起的任何错误,您可以自己维护它

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new [] {
                "EUR5-002,EUR10-000,EUR20-001,EUR50-001,EUR100-001,EUR200-000,EUR500-000", 
                "EUR5-000,EUR10-000,EUR20-002,EUR50-001,EUR100-001,EUR200-000,EUR500-000", 
                "EUR5-001,EUR10-001,EUR20-002,EUR50-001,EUR100-002,EUR200-003,EUR500-000"
            };

            var results = new Dictionary<string, int>();

            foreach (var line in data)
            {
                var entries = line.Split(',');
                foreach (var entry in entries)
                {
                    var parts = entry.Split('-');
                    string key = parts[0];
                    if (!results.ContainsKey(key))
                    {
                        results[key] = 0;
                    }

                    results[key] += int.Parse(parts[1]);
                }
            }

            foreach (var result in results)
            {
                Console.WriteLine(result.Key + "-" + result.Value.ToString("000"));
            }

            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Collections.Generic;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
var数据=新[]{
“欧元5-002、欧元10-000、欧元20-001、欧元50-001、欧元100-001、欧元200-000、欧元500-000”,
“5-000欧元、10-000欧元、20-002欧元、50-001欧元、100-001欧元、200-000欧元、500-000欧元”,
欧元5-001、欧元10-001、欧元20-002、欧元50-001、欧元100-002、欧元200-003、欧元500-000
};
var results=newdictionary();
foreach(数据中的var行)
{
变量项=行分割(',');
foreach(分录中的var分录)
{
var parts=条目分割('-');
字符串键=部件[0];
如果(!results.ContainsKey(键))
{
结果[关键]=0;
}
结果[key]+=int.Parse(部分[1]);
}
}
foreach(结果中的var结果)
{
Console.WriteLine(result.Key+“-”+result.Value.ToString(“000”));
}
Console.ReadLine();
}
}
}

您使用的是哪种语言/工具?您尝试过什么?每一行的格式总是相同的?您好,JRC,是的。每一行都有相同的格式。嗨,Anirudh,我正在寻找C#中的逻辑,这是一个短得多的解决方案,但它需要预定义货币值,并且不适用于非
EUR
currency。因为OP没有提供足够的细节,也许对他有用。@Tommi你是对的。.但是OP清楚地提到了
5,10,20,50100200500
你好,Anirudh,谢谢你的回复。是,现在,货币值是预定义的。在未来,我们不知道还会有多少,就像25,75一样。我们的逻辑应该适用于每一个值。@user2542095编辑了答案。.正如预期的那样,现在效果很好。.感谢Anirudh提供的长期帮助。我会尝试你的逻辑以及更好的性能。感谢Tommi在这方面的帮助。
using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new [] {
                "EUR5-002,EUR10-000,EUR20-001,EUR50-001,EUR100-001,EUR200-000,EUR500-000", 
                "EUR5-000,EUR10-000,EUR20-002,EUR50-001,EUR100-001,EUR200-000,EUR500-000", 
                "EUR5-001,EUR10-001,EUR20-002,EUR50-001,EUR100-002,EUR200-003,EUR500-000"
            };

            var results = new Dictionary<string, int>();

            foreach (var line in data)
            {
                var entries = line.Split(',');
                foreach (var entry in entries)
                {
                    var parts = entry.Split('-');
                    string key = parts[0];
                    if (!results.ContainsKey(key))
                    {
                        results[key] = 0;
                    }

                    results[key] += int.Parse(parts[1]);
                }
            }

            foreach (var result in results)
            {
                Console.WriteLine(result.Key + "-" + result.Value.ToString("000"));
            }

            Console.ReadLine();
        }
    }
}