java - 带有分隔符和值的拆分字符串数组
问题描述
我需要在字符串数组中拆分请求参数。
假设我以这种方式收到请求
<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]
诸如此类的东西……
谁能建议我如何从请求参数生成第二个数组?
解决方案
任何人都可以建议我如何从请求参数生成第二个数组...</p>
那一个其实很简单。你只需要String.indexOf(String, int)!
换句话说:您可以使用该方法来识别:
- 参数字符串中有 AND / OR 子字符串的位置
- 你可以从索引开始
含义:您可以先做indexOf("AND")
并indexOf("OR")
确定第一个关键字。这给出了一个索引 i。现在,您使用上述方法获取索引,在第一个关键字的右侧进行搜索。
换句话说:这个“仅”需要您在参数字符串中进行一些循环和搜索。
但正如我在评论中提到的:我认为你忽略了你想法的真正复杂性。您基本上是在为字符串的内容定义语义。而你正在引入运营商。如果你真的很认真,那么你将不得不考虑你自己发明的运算符的优先顺序。如果这件事“公开”并且拥有多个用户,那么有人出现并希望 AND 优先于 OR 只是时间问题。以及某种使用“括号”来启用术语分组的方式。
推荐阅读
- spring-boot - Google App Engine 忽略 Springboot 应用程序属性
- encryption - 使用 OpenSSL 的 RSA 解密原语 (SP800-56B)
- javascript - 将照片从数据库上传到客户端
- python - 如何在信号中找到峰值之前的实例?
- jira - 没有任何方法可以免费执行后功能脚本吗?
- javascript - 如何在容器中的最后一个 div 之前生成一个新的 div?
- ms-word - 尝试在 Python 中导入 docx
- celery - 芹菜画布行为在异步模式和渴望模式之间有所不同
- django - 向具有过滤器的 Django Rest Api 发布请求。所以messages/?room=4
- node.js - 如何仅从 package-lock.json 安装 npm 依赖项?