java - 如何在某个值之后检索字符串中的所有记录
问题描述
我希望检索“xnum=”之后和“,”分隔符之前的所有值。例如,在下面的字符串中,我想检索值“zjdb”和“2jdb”,并按照找到它们的顺序将它们存储在一个数组中。我知道这是一件非常随机的事情,但不幸的是,这是解决我目前面临的问题的唯一方法。
String: "{zjdb={fname=jbdjd, lname=ejdj, xnum=zjdb, email=ejdj}, 2jdb={fname=ij, lname=vji, xnum=2jdb, email=bbb}}"
我知道我需要遍历并搜索“x”,然后查看下一个字符是否是“n”,下一个是“u”等,然后在“=”之后获取索引,直到“,”但是我已经考虑太多了,这对我来说太复杂了。我想知道是否有人知道对此有点简单的解决方案..?提前非常感谢。
解决方案
您可以使用正则表达式来查找标记。假设输入格式正确,例如在xnum=
value 之后有,
or }
:
String input = "{zjdb={fname=jbdjd, lname=ejdj, xnum=zjdb, email=ejdj}, 2jdb={fname=ij, lname=vji, xnum=2jdb, email=bbb}}";
Pattern p = Pattern.compile("[{ ]xnum=([^,}]+)[,}]");
Matcher m = p.matcher(input);
while (m.find()) {
String xnum = m.group(1);
System.out.println(xnum);
}
推荐阅读
- z3 - z3 是否可以从抽象函数公式中求解函数?
- java - 在给定本金、利率和时间的情况下,编写一个程序来找出单利和复利之间的区别
- typescript - 构建步骤后将文件保存在 dist 文件夹中(nestjs)
- android - Android上的Qt蓝牙“无法启动经典发现”
- node.js - 在 Fastify 中,如何在用户超过速率限制配额后将其禁止 60 秒。( fastify-rate-limit )
- mysql - orderBy 子类别直到存在于 laravel
- oracle - Oracle 企业管理器 19c 问题
- .net - 在 docker 中从 .net 核心程序运行单独的进程
- javascript - 单击按钮会显示 url,但不会将我带到我想要的页面
- python - tf.python.keras.saving.hdf5_format 抛出 TypeErrr('Not JSON Serializable:' obj)