首页 > 解决方案 > 使用java从具有唯一标识符的字符串中获取子字符串

问题描述

我有一个字符串:

String example = "<UserGroup:groupName> , <RULE: ruleName>";

我想从中提取 groupName 和 ruleName ,即子字符串是

字符串用户组 = 组名;字符串规则 = 规则名称;

有人可以提供一些帮助吗?

标签: javajava-8substring

解决方案


您可以使用正则表达式

  1. 用逗号前后的任何空格分隔:\s*,\s*
  2. 用冒号前后的任何空格分割:<(\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"));

推荐阅读