我如何使用此分隔符评估此字符串#c" stringtosum" #g
代码1,码2,的#C55 + 35 + 97#克下,CODEN,CODE3,码4,的#C44 + 25 + 07#克密码子
55 + 35 + 97 = 187
44 + 25 + 07 = 76
并输出此
代码1,码2,的#C187#克下,CODEN,CODE3,码4,的#C76#克密码子
我正在使用这两个字符串,#c55 + 35 + 97#g ,#c44 + 25 + 07#g ,即时评估(总和)这两个
55 + 35 + 97 = 187
44 + 25 + 07 = 76
并输出此
代码1,码2,·C的 187 #克,CODEN,CODE3,码4,#ç 76 #gcoden
我有多个要求和的字符串
答案 0 :(得分:1)
首先,您可以使用#c([^#]*)#
之类的正则表达式来查找匹配项。然后你只需要在分组中取出字符串,在加号上拆分,将值解析为整数,然后像这样进行求和。
string input = "code1,code2,#c55+35+97#g,coden,code3,code4,#c44+25+07#gcoden";
string output = Regex.Replace(
input,
"#c([^#]*)#",
m => "#c" + m.Groups[1].Value.Split('+').Sum(int.Parse) + "#");
Console.WriteLine(output);
输出
代码1,码2,#C187#克,CODEN,CODE3,码4,#C76#gcoden
答案 1 :(得分:1)
好吧......因为你问得很好。请帮帮我
var str = "code1,code2,#c55+35+97#g,coden,code3,code4,#c44+25+07#g,coden";
var parts = str.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var builder = new StringBuilder();
for (var i = 0; i < parts.Length; i++)
{
var temp = parts[i];
if (temp.StartsWith("#c") && temp.EndsWith("#g"))
{
var nums = temp.Substring(2, temp.Length - 4).Split(new[] { "+" }, StringSplitOptions.RemoveEmptyEntries);
temp = $"#c{nums.Sum(int.Parse)}#g";
}
builder.Append(temp);
if (i != parts.Length-1)
builder.Append(",");
}
var output = builder.ToString();
答案 2 :(得分:1)
您可以使用正则表达式来标识要解析和评估的字符串部分,然后引入Jace.NET NuGet package来评估计算。此方法适用于所有类型的算术运算,而不仅适用于求和:
var inputString = "code1,code2,#c55+35+97#g,coden,code3,code4,#c44+25+07#gcoden";
var calcEngine = new CalculationEngine(); // add "using Jace;" at the top of your code file to bring in the CalculationEngine
var outputString = Regex.Replace(inputString, "#c([^#]*)#g", m => "#c" + calcEngine.Calculate(m.Groups[1].Value).ToString() + "#g");
答案 3 :(得分:-1)
我建议查看正则表达式(正则表达式)。正则表达式允许您解析字符串并挑选出某些部分。从那里,您可以添加它们,然后将它们替换回您的字符串。
例如,“\ d * + \ d *”将允许您选择两个子串“55 + 35 + 97”和“44 + 25 + 07”