java - 使用分隔符和值分割的字符串数组

标签 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]

类似的事情......

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

最佳答案

can any one suggest how I can generate 2nd array from the request param…

这个其实很简单。您只需要String.indexOf(String, int) !

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

  • 参数字符串中包含 AND/OR 子字符串的位置
  • 您可以从索引开始做到这一点

含义:您可以首先执行 indexOf("AND")indexOf("OR") 来识别 first 关键字。这给出了索引 i。现在,您可以使用前面提到的采用索引的方法来搜索第一个关键字的右侧

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

但正如我在评论中提到的:我认为你忽视了你的想法的真正复杂性。您基本上是在为字符串的内容定义语义。您正在介绍运算符。如果您真的对此很认真,那么您将不得不考虑 order of precedence为您自己发明的运算符。如果这个东西“公开”并且拥有多个用户,那么有人出现并希望 AND 优先于 OR 只是时间问题。以及某种使用“括号”来对术语进行分组的方式。

关于java - 使用分隔符和值分割的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56112218/

相关文章:

java - 无法获取用户详细信息: class org. springframework.web.client.RestClientException,无法提取响应:没有合适的

java - 如何用java连接rabbitmq集群?

java - 我如何通过 lambda 创建字符串比较器?

java - 将值复制到 Map<DemoType, List<Demography>>

lambda - 这个 lambda 表达式有什么作用以及如何作用

java - 使用变量类型定义另一个变量类型

java - cocos2dx android studio 编辑配置

java - 如何删除java中第一个和最后一个出现的句子

java - Optional#map 可以将输入参数的状态更改为 Function lambda 吗?

performance - Java - 重复的函数调用减少了执行时间