qq_34311307 2023-05-23 01:32 采纳率: 100%
浏览 25
已结题

字符串处理问题,带佬进!

现有需要处理一个字符串如下:
2(1A1B)2(1B1A)2(1A1C)
要求输出:
6A4B2C=12
如题,有何最优解

  • 写回答

3条回答 默认 最新

  • 码老头 2023-05-23 08:59
    关注

    以下是一个正则表达式实现的代码示例:

    using System.Text.RegularExpressions;
    
    var inputString = "2(1A1B)2(1B1A)2(1A1C)";
    var outputString = ProcessString(inputString);
    Console.WriteLine(outputString);
    Console.ReadKey();
    static string ProcessString(string inputString)
    {
        // 使用正则表达式匹配括号内的内容
        var pattern = @"(\d+)\((\d+[A-Z]+\d+[A-Z]+)\)";
        var outputString = Regex.Replace(inputString, pattern, m =>
        {
            var count = int.Parse(m.Groups[1].Value);
            var content = m.Groups[2].Value;
            return MultiplyString(content, count);
        });
    
        // 统计字符出现的次数
        var charCount = new Dictionary<char, int>();
        foreach (var c in outputString.Where(char.IsLetter))
        {
            if (charCount.ContainsKey(c))
            {
                charCount[c]++;
            }
            else
            {
                charCount[c] = 1;
            }
        }
    
        // 构建最终的输出结果
        var finalResult = charCount.Aggregate("", (current, entry) => current + (entry.Value.ToString() + entry.Key));
        finalResult += "=" + charCount.Sum(x => x.Value);
    
        return finalResult;
    }
    
    static string MultiplyString(string inputString, int count)
    {
        var result = "";
        for (var i = 0; i < count; i++)
        {
            result += inputString;
        }
        return result;
    }
    

    输出结果:

    6A4B2C=12
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 5月23日