【问题标题】:how to get id, name and table in stream() api如何在 stream() api 中获取 id、name 和 table
【发布时间】:2021-09-23 00:54:57
【问题描述】:

我有一个字符串如下:

@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')

我需要获取花括号内的所有属性,即 id、表、名称等。

谁能建议如何做到这一点?谢谢..

【问题讨论】:

    标签: java spring java-stream


    【解决方案1】:

    您应该使用这样的正则表达式:\{(\w+)\} 来检测大括号之间的字母/数字/下划线的非空序列,或者 \{([A-Za-z]+)\} 如果属性包含英文字母.

    那么从Java 9开始,类Matcher有一个方法results返回Stream<MatchResult>,属性可以从上述正则表达式的group(1)检索:

    Pattern pat = Pattern.compile("\\{(\\w+)\\}");
            
    String code = "@AB{id} in (select @AC{id} from @AC{table} where @AC{name}='Kavita')";
            
    List<String> parts = pat.matcher(code)
                            .results().map(mr -> mr.group(1))
                            .collect(Collectors.toList());
    System.out.println(parts);
    

    输出:

    [id, id, table, name]
    

    【讨论】:

    • 感谢您的回复..请您提出以下建议:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2019-08-16
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多