在特定字符c#

时间:2015-07-03 22:51:17

标签: c# regex string

假设下面的字符串在C#中,那么如何替换

y=x^7+3x^4-x+5

y=0^7+3*0^4-0+5

因为你不能用x替换0的所有实例,因为你得到30^4

2 个答案:

答案 0 :(得分:3)

var a = "y=x^7+3x^4-x+5";
var b = Regex.Replace(a, @"(\d+|[a-zA-Z])(?=\d+|[a-zA-Z])", @"$1*");
var c = Regex.Replace(b, @"x", @"0");

第二行的总结:匹配任何数字或变量,后跟任何数字或变量。

输出示例:

In: y=33xggyz/3/4*x/x+xx1         |  In: y=x^7+3x^4-x+5        
Out:y=33*x*g*g*y*z/3/4*x/x+x*x*1  |  Out:y=0^7+3*0^4-0+5              
                                  |
In: y=2+33xggyz/3/4*x/x+xx        |  In: y=x1
Out:y=2+33*0*g*g*y*z/3/4*0/0+0*0  |  Out:y=0*1
                                  |
In: y=10xy^2+xx+(12x+1yy)         |  In: y(xx)=1
Out:y=10*0*y^2+0*0+(12*0+1*y*y)   |  Out:y(0*0)=1

更新:(2015年7月4日)已修复错误,失败,y = x1(确实返回y = 01)

答案 1 :(得分:0)

在您只想要更改的用户案例中

y=x^7+3x^4-x+5

y=0^7+3*0^4-0+5

只需添加另一个变量即可。

int x = //Whatever x is going to be;
int j = 0;
int y = j^7+3x^4-j+5

现在,如果您有更多的用户案例,而不仅仅是这个用户案例,您可以非常快速地添加大量变量,在这种情况下您不希望使用此选项。但如果你将它用于一个孤立的案例,这可能是一个可行的答案。