C# 检测字符串中的十进制数和字母
我正在写一个数学应用程序。如何在c#中检测字符串中的数字和字母。例如:C# 检测字符串中的十进制数和字母,c#,string,replace,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 它可以是整数或双精度类型的数字。正则表达式替换: var math = new Regex(@"\d[a-zA-Z]");
string a = "2x"; // input string
string b = a.Replace("2x","2*x"); // Replace string to add multiplaction sign between a number and variable
它可以是整数或双精度类型的数字。正则表达式替换:
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
10+2*(X+5*(a+b))
更新
如果系数和变量之间可以有圆括号,则更改如下:
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)));
输出
-2*X-4*Z-5*Y
10+2*(X+5*(a+b))
您可以使用
Regex.Replace
函数
Regex.Replace(@"(?<=\d)(?=[a-zA-Z])", "*");
这取决于您希望十进制数字的格式。2.5或2.5表示2.5吗?使用正则表达式,如val=Regex.Match(subjectString,@“-?\d+”).Value。它将以字符串形式为您提供该数字。然后可以使用int.parse(val)解析为int;方法。
Regex.Replace(@)(?谢谢,它工作得很好。如果用户像这样输入“2(x)”,需要更改什么?@Bilal,这取决于。2(x)可以是2*(x)
或func2(x)
或f2(x)
的一部分。我认为,Regex是不够的,你需要一个更智能的表达式解析器,如果它只有2(x)不是函数。那么有什么解决方案吗?我如何修改它以添加一个单词“log10”的例外?谢谢你的帮助。@Bilal,log10有什么问题吗?它不是由正则表达式修改的,因为数字在字母后面