我试图通过文本解析它是否是一个有效的表达式。我遇到了以下问题。
((5 * 4)+ 3)是一个有效的表达式。
我如何解析这个以允许我一次分析一个括号中的内容。 例如,我希望在单独的子字符串中返回以下表达式,以便一个子字符串读取" 5 * 4"另一个单独的子字符串读取"(5 * 4)+ 3"
我知道我可以按如下方式使用子字符串:
String test = "test (542)";
test = test.substring(test.indexOf("(") + 1);
test = test.substring(0, test.indexOf(")"));
但是我怎样才能最好地处理未知字符串的多个级别的括号。
答案 0 :(得分:1)
Divide and Conquer将是一种很有前景的方法。您可以定义一个递归函数,它只需要显式处理一个简单的基本情况(如5 * 4)。只要有括号,再次使用括号内的文本调用该函数。
答案 1 :(得分:0)
您可以使用Shunting-yard algorithm执行此操作。如果只验证表达式,则不需要实现所有算法。当您拥有所有必需的运算符和操作数时,表达式有效。在YouTube中,您可以看到Shunting Yard Algorithm - Intro and Reverse Polish Notation。