带分隔符和值的字符串数组

时间:2019-05-13 12:18:25

标签: java java-8

我需要在字符串数组中拆分请求参数。

假设我以这种方式收到请求

<API_PATH>?reqPramName=gender=m*AND*age<30*OR*age>60*AND*address=India

现在我要创建两组数组 1)查询名称/值数组 2)和/或合取数组

Array name/value 
------------------
0  | gender=MAN
------------------
1  | age<30
------------------
2  | age>60
------------------
3  | address=India

Array and/or
------------------
0  | AND
-----------------
1  | OR
----------------
2  | AND

我正在执行分割操作,例如…。

filter.split("AND|OR")

对于可以正常工作的名称/值,但是谁能帮助我从请求参数构造第二个数组(和/或数组)?

我的想法是通过映射这两个数组来生成依赖于这两个数组的谓词,例如

1stArray[0]2ndArray[0]1stArray[1]2ndArray[1]

类似的东西...

有人可以建议我如何从请求参数中生成第二个数组吗?

1 个答案:

答案 0 :(得分:4)

  

有人能建议我如何从请求参数中生成第二个数组吗?

那实际上很简单。您只需要String.indexOf(String, int)

换句话说:您可以使用该方法来识别:

  • 在参数字符串中包含AND / OR子字符串的位置
  • ,您可以从索引开始

含义:您可以先执行indexOf("AND")indexOf("OR")来标识 first 关键字。那给出一个索引i。现在,您可以使用前面提到的带索引的方法来搜索第一个关键字的 right

换句话说:此“仅”要求您在参数字符串中进行一些循环和搜索。

但是正如我的评论中所提到的:我认为您忽略了您想法的真正复杂性。您基本上是在为字符串的内容定义语义。您正在介绍操作员。如果您真的很认真,那么您将不得不为自己发明的运营商考虑order of precedence。如果这个事情“公开”并且拥有多个用户,那么某个人出现并希望AND在OR之前只是时间问题。还有一些使用“括号”来对术语进行分组的方法。