现有需要处理一个字符串如下:
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本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用