110,536
社区成员
发帖
与我相关
我的任务
分享
string str = @"94(3).5(1)";
Regex reg = new Regex(@"(\d)(?<value>\((?<count>\d+)\))");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
for (int i = 1; i < Convert.ToInt32(m.Groups["count"].ToString()); i++)
{
str = str.Insert(str.IndexOf(m.Groups["value"].ToString()), m.Groups[1].ToString());
}
str = str.Replace(m.Groups["value"].ToString(), "");
}
Console.WriteLine(str);
/*
9444.5
*/
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "A9(3).5(1)B";
string output = Regex.Replace(input, @"(.)\(([0-9]+)\)",
delegate(Match m){ return new string(m.Groups[1].Value[0], int.Parse(m.Groups[2].Value)); }
);
Console.WriteLine(output); // 输出:A999.5B
}
}
string[] input = { "9.1(2)", "9(3).5(1)", "89(2).7" };
Regex reg = new Regex(@"(\d)\((\d+)\)");
foreach (string s in input)
{
richTextBox2.Text += "源字符串:" + s.PadRight(15, ' ') + " 替换结果:" + reg.Replace(s, delegate(Match m) { return new string(m.Groups[1].Value[0], Convert.ToInt32(m.Groups[2].Value)); }) + "\n";
}
/*-------输出--------
源字符串:9.1(2) 替换结果:9.11
源字符串:9(3).5(1) 替换结果:999.5
源字符串:89(2).7 替换结果:899.7
*/