在Java中拆分布尔表达式

Jan*_*eNY 3 java string expression split

如何在Java中拆分布尔表达式?例如,我想从表达式中获取以下内容a_1 & b_2 | (!c_3):

String tokens[] = {"a_1", "&", "b_2", "|", "(", "!", "c_3", ")"};
Run Code Online (Sandbox Code Playgroud)

变量的名称包含字母数字字符和下划线(_).

And*_*s_D 5

如果要解析String - 可能要创建语法树并计算表达式 - 那么最好用简单的switch表达式解析String:

// for each char c in String
switch (c) {
  case '&': processAnd();break;
  case '|': processOr();break;
  case '!': processNot();break;
  case '(': processOpenPara();break;
  case ')': processClosePara();break;
  case ' ': break;
  default:  processVarName(); break;
}
Run Code Online (Sandbox Code Playgroud)

这只是一个显示模式的存根.您可能希望使用堆栈来评估表达式.