java - 使用java从具有唯一标识符的字符串中获取子字符串
问题描述
我有一个字符串:
String example = "<UserGroup:groupName> , <RULE: ruleName>";
我想从中提取 groupName 和 ruleName ,即子字符串是
字符串用户组 = 组名;字符串规则 = 规则名称;
有人可以提供一些帮助吗?
解决方案
您可以使用正则表达式
- 用逗号前后的任何空格分隔:
\s*,\s*
- 用冒号前后的任何空格分割:
<(\S+)\s*:\s*(\S+)>
.
这里的代码
String input = "<UserGroup:groupName> , <RULE: ruleName> , <Name: Value>";
Pattern pattern = Pattern.compile("<(\\S+)\\s*:\\s*(\\S+)>");
Map<String, String> map = new HashMap<>();
Arrays.stream(input.split("\\s*,\\s*")).forEach(part -> {
Matcher matcher = pattern.matcher(part);
if (matcher.find())
map.put(matcher.group(1), matcher.group(2));
});
System.out.println("UserGroup: " + map.get("groupName"));
推荐阅读
- ssl - 自签名 SSL 证书中的颁发者证书无效
- docker - Docker Nginx 在端口 80 上与共享主机
- docker - 使用 docker compose 在多个节点上使用 Prometheus + Grafana
- sql - SQL Server:显示最新记录的日期和时间
- user-defined-functions - 我应该在哪里为通用函数注册 spark UDF
- angular - 使用 [routerLink] 重定向到 root 时参考“link.path”
- azure - 在 terraform 中为 azurerm_function_app 指定操作系统是 linux
- android - 在片段和活动中观察 LiveData 实例
- angular - 查询参数更改时,角度路由器导航不会加载页面
- ios - iOS - 删除 viewForHeaderInSction 和 UITableView 中的第一个单元格之间的分隔符