有没有可能的方法来检查使用了哪个 Split() 元素?

Is there any possible way to check which Split() element is used?

我有这个代码:

string expresie = Console.ReadLine();          
char[] separatori = {'+', '-'};
string[] elementeExpresie = expresie.Split(separatori);

int elem0 = int.Parse(elementeExpresie[0]);
int elem1 = int.Parse(elementeExpresie[1]);
int elem2 = int.Parse(elementeExpresie[2]);
/////////////////////////////////////////////////////////////////////////////////////////
int operatie1 = 0;

if (separatori[0] == '+')
{
    operatie1 = elem0+elem1;
}
else if (separatori[0] == '-')
{
    operatie1 = elem0-elem1;
}           
           
int operatie2 = 0;

if(separatori[1] == '+')
{
    operatie2 = operatie1+elem2;
}
else if(separatori[1] == '-')
{
    operatie2 = operatie1-elem2;
}

Console.WriteLine(operatie2);

我必须编写一个类似于计算器的程序,用户在控制台中插入一个算术表达式,最后,它必须显示计算结果。代码的第二部分不起作用,因为我需要检查使用了哪个 char[] 元素; “+”或“-”。这实际上是我的问题:是否有任何可能的方法来检查使用了哪个 Split() 元素?

例子: string mathExpression = "10 + 11 - 5"

控制台输出:16

PS:学校作业,需要用到.split方法

用填充的运算符替换您的运算符,并在填充字符上拆分。

例如

var pad = "[=10=]";
var input = "1+2";
var operators = new string[] { "+", "-" };
foreach (var operator in operators)
{
    input = input.Replace(operator, pad + operator + pad);
}
var tokens = input.Split( new string[] { pad } , StringSplitOptions.RemoveEmptyEntries);

Console.WriteLine(tokens[0]); // Outputs "1"
Console.WriteLine(tokens[1]); // Outputs "+"
Console.WriteLine(tokens[2]); // Outputs "2"

一个想法是按空格拆分,这样您就有了操作数和运算符的集合。然后你可以做如下的事情:

string expression = Console.ReadLine();
string[] expParts = expression.Split();

int operand1 = int.Parse(expParts[0]);
string operator1 = expParts[1];
int operand2 = int.Parse(expParts[2]);
string operator2 = expParts[3];
int operand3 = int.Parse(expParts[4]);

int result = operand1;

if (operator1 == "+")
{
    result += operand2;
}
else if (operator1 == "-")
{
    result -= operand2;
}

if (operator2 == "+")
{
    result += operand3;
}
else if (operator2 == "-")
{
    result -= operand3;
}

Console.WriteLine(result);

这里的缺点是它需要精确的字符串格式 ("10 + 11 - 5")。如果有人输入了"10+11-5",就不行了。