You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何实现字符串重复文本去重并按指定格式统计输出

实现方案

核心逻辑不需要做复杂的字符串重复扫描,遍历物品数组时直接做同名计数+去重即可,两步就能搞定,顺便解决你原有代码的几个问题:未做重复处理、字符串拼接性能差、末尾多冗余逗号。

  • 用字典结构存储每个物品标题对应的出现次数,遍历过程中自动完成去重和计数,时间复杂度是O(n),比事后扫字符串找重复效率高很多
  • 计数完成后遍历统计结果,按照<amount><item.title>的要求格式拼接内容即可
  • 拼接字符串优先用StringBuilder,避免反复创建新字符串对象带来的性能损耗,物品数量多的时候也不会有卡顿问题

参考实现代码

using System.Text;
using System.Collections.Generic;

// 省略你原有items数组的定义逻辑
Dictionary<string, int> itemCounter = new Dictionary<string, int>();
StringBuilder textBuilder = new StringBuilder();

// 遍历物品完成去重计数
foreach (var item in items)
{
    if (itemCounter.ContainsKey(item.title))
    {
        itemCounter[item.title]++;
    }
    else
    {
        itemCounter[item.title] = 1;
    }
}

// 按指定格式拼接最终文本
foreach (var countPair in itemCounter)
{
    // 如果你需要在不同物品之间加分隔符(比如逗号),可以在这里拼接后调用TrimEnd去掉末尾多余分隔符
    textBuilder.Append($"{countPair.Value}{countPair.Key}");
}

// 最终输出结果
string finalText = textBuilder.ToString();

补充说明:如果你需要严格保留物品第一次出现的顺序,老版本.NET Framework可以替换Dictionary为OrderedDictionary,.NET Core 3.0及以上版本的Dictionary默认会保留插入顺序,不需要额外调整。你原有代码里声明的needs数组没有被实际使用,可以直接删掉减少冗余。

内容的提问来源于stack exchange,提问作者mr_faisal 29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:18:49