检测字符串中的十进制数字和字母

时间:2015-05-27 11:28:06

标签: c# string replace

我正在写一个数学应用程序。如何在c#中检测字符串中的数字和字母。例如:

string a = "2x"; // input string
string b = a.Replace("2x","2*x"); // Replace string to add multiplaction sign between a number and variable

它可以是整数或双精度数。

2 个答案:

答案 0 :(得分:2)

正则表达式替换:

var math = new Regex(@"\d[a-zA-Z]");            
var expr = "-2X-4Z-5Y";
string replaced = math.Replace(expr, m => String.Concat(m.Value[0], '*', m.Value[1]));

输出

-2*X-4*Z-5*Y

更新

如果系数和变量之间可以有圆括号,则更改替换为:

var math = new Regex(@"\d(\()*[a-zA-Z]");
var expr = "10+2(X+5(a+b))";
string replaced = math.Replace(expr, 
                  m => String.Concat(m.Value[0], "*", m.Value.Substring(1)));

输出

10+2*(X+5*(a+b))

答案 1 :(得分:0)

您可以使用Regex.Replace功能。

Regex.Replace(@"(?<=\d)(?=[a-zA-Z])", "*");

OR

Regex.Replace(@"(\d)([a-zA-Z])", "$1*$2");