gpt4 book ai didi

c# - 替换字符串列表中元素的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:24 25 4
gpt4 key购买 nike

我有一个包含如下字符串的列表:

List<String> l = new List<String>(){
"item1 1",
"item2 2",
"item3 3",
"item1 4",
"item1 5",
"item3 6"};

我想对相同的项目求和。示例:

l = {"item1 10", "item2 2", "item3 9"}

我已经试过了:

List<String> result = new List<String>();
for (int i = 0; i < total.Count; i++)
{
for (int j = 0; j < i; j++)
{
int diferenta = 0;
if (total[i].Substring(0, total[i].IndexOf(" ")).Equals(total[j].Substring(0, total[j].IndexOf(" "))))
{
diferenta = int.Parse(ExtractNumber(total[i].Substring(total[i].IndexOf(" ")))) + int.Parse(ExtractNumber(total[j].Substring(total[j].IndexOf(" "))));
total[i] = total[i].Replace(ExtractNumber(total[i].Substring(total[i].IndexOf(" "))), diferenta.ToString());
result.Add(total[i]);
}
}

并获取不同的元素:

List<String> final = result.Distinct().toList();

我的方法一点都不对,想请教您。

最佳答案

您可以拆分每个元素,按第一个组件分组,然后将第二个组件相加:

var groupQuery = l.Select(x => x.Split(new[] { ' ' })).GroupBy(x => x[0]);
var sumQuery = groupQuery.Select(x => new { x.Key, Total = x.Select(elem => int.Parse(elem[1])).Sum() });
foreach (var total in sumQuery)
{
Console.WriteLine("{0}: {1}", total.Key, total.Total);
}

这段代码显然省略了一堆错误检查(如果字符串没有拆分,或者没有可以解析的第二个组件会发生什么?),但可以毫不费力地添加进去。

关于c# - 替换字符串列表中元素的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777085/

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