如何解析具有函数和参数的字符串,字符串定义在明确定义的“(”

时间:2018-02-22 14:14:28

标签: java

我的字符串是

{{1}}

我需要编写一些概括逻辑,它给出fun1 = decode,fun2 = decode,fun3 = decode,fun4 = concat,fun5 = Concat,fun6 = Concat以及它们各自的参数1,para2,para3在Java中的任何类型的集合中。 参数是那些在函数中传递的参数, 例如 concat(W_Employee_D_3.last_Name,',') concat是函数,参数是W_Employee_D_3.last_Name& ''

String可以包含任意数量的函数,参数,也可以有不同的函数。

1 个答案:

答案 0 :(得分:1)

这看起来像是一种卑鄙的任务。也许你必须有一些ANTLR语法? 我只是提供一种处理不那么乏味的工作的方法。

对于这种嵌套,可以

  • 使用堆栈从左到右解析,或
  • 使用从最内部找到的重新索引开始的可简化表达式,并构建一些结果。

我使用后者,使用地图来保存结果结构,在字符串中用一些“变量”替换。

我们可以为

引入变量
  • 一个字符串文字,因为它可以包含逗号,括号和其他不被解析的文本,
  • 一个函数调用

如果为简化案例提供解决方案:

result[0].Value;

现在有一个函数调用作为变量。它们的值包含变量名称,并且需要再次替换。