我需要在字符串数组中拆分请求参数。
假设我以这种方式收到请求
<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]
类似的东西...
有人可以建议我如何从请求参数中生成第二个数组吗?
答案 0 :(得分:4)
有人能建议我如何从请求参数中生成第二个数组吗?
那实际上很简单。您只需要String.indexOf(String, int)!
换句话说:您可以使用该方法来识别:
含义:您可以先执行indexOf("AND")
和indexOf("OR")
来标识 first 关键字。那给出一个索引i。现在,您可以使用前面提到的带索引的方法来搜索第一个关键字的 right 。
换句话说:此“仅”要求您在参数字符串中进行一些循环和搜索。
但是正如我的评论中所提到的:我认为您忽略了您想法的真正复杂性。您基本上是在为字符串的内容定义语义。您正在介绍操作员。如果您真的很认真,那么您将不得不为自己发明的运营商考虑order of precedence。如果这个事情“公开”并且拥有多个用户,那么某个人出现并希望AND在OR之前只是时间问题。还有一些使用“括号”来对术语进行分组的方法。