我有一个简单的算术表达式,其中包含整数,括号和+ - */。就像这样:c#将算术表达式拆分为字符串[]
((1+33)()(4+(3-5)))
我需要做的就是这个表达式拆分到string[]
这样的:
{(, (, 1, +, 33,), (,), (, 4, +, (, 3, -, 5,),),)}
我试图用Regex
类做
public string[] SplitString(string str)
{
return Regex.Split(str, "(?<=[()-+*/])|(?=[()-+*/])");
}
但是输出数据不太正确:
{(, (, 1, +, 33,), (,), (, 4, +, (, **3-5**,),),)}
您可以计算结果而不拆分它。这是你在追求什么? – user3185569
请注意'' - +'在你的char类中创建了一个比你期望的更多的范围。将连字符放在字符类的末尾。 –
除了那个非转义的破折号,我建议考虑做另一种方式:匹配所需的标记并返回一个所有匹配的列表 - 你将得到一个更简单的正则表达式:'return Regex.Matches(str,@“([ ()+ */- ] | \ d +)“)。Cast().Select(m => m.Value).ToArray();' –