所以,我有一个解析表达式的算法.此外,还有条件方式,是否有括号.我正在制作表达式并将其放在字符串变量中,如:
string expression = "6*(3+2)";
Run Code Online (Sandbox Code Playgroud)
然后我让它通过解析功能.在它给了我奇怪的结果后,我去调试解析函数并注意到那里发生了奇怪的事情:因为我从右到左迭代字符串的字符
for (int i = (expression.Length -1); i>=0; i--) ...
Run Code Online (Sandbox Code Playgroud)
它没有通过条件
if (expression[i].Equals(")")) ...
Run Code Online (Sandbox Code Playgroud)
当表达式[i]显示在")"时,因为我在Visual Studio中的"Locals"部分看到它.这是为什么?我需要做的是:
if (expression[i].ToString() == ")") ...
Run Code Online (Sandbox Code Playgroud)
然后我会得到正确的结果.它没有让我做表达式[i] ==")"因为它说我不能在char和string上应用"=="运算符.
那么,为什么.Equals在")"时没有通过?
Jon*_*eet 17
这是为什么?
字符与字符串不同.字符串是一系列字符.是的类型,expression[i]而char不是string- 所以你想将它与char文字进行比较:
if (expression[i] == ')')
Run Code Online (Sandbox Code Playgroud)
请注意单引号(')')而不是您正在使用的双引号(")").单引号用于字符文字; 双引号用于字符串文字.