StringUtils或用于保留分隔符的任何库类方法

时间:2016-11-23 12:24:02

标签: java regex

我有一个用分隔符@和$分隔的字符串“role1 @ role2 @ role3 @ role4 $ arole”。我用下面的java代码

MyCollector.toMap

得到了结果

String str = "role1@role2@role3@role4$arole";
        String[] values = StringUtils.splitPreserveAllTokens(str, "\\@\\$");

        for (String value : values) {
            System.out.println(value);
        }

但我的要求是保留结果中的分隔符。因此,结果必须符合要求

role1
role2
role3
role4
arole

我分析了apache commons StringUtils方法来做到这一点,但无法找到任何线索。

任何获得上述预期结果的库类?

1 个答案:

答案 0 :(得分:3)

您可以使用简单的split前瞻性:

String str = "role1@role2@role3@role4$arole";
String[] res = str.split("(?=[@$])");
System.out.println(Arrays.toString(res));
// => [role1, @role2, @role3, @role4, $arole]

请参阅Java demo

(?=[@$])正则表达式匹配字符串中的任何位置,后跟@$符号(请注意$不会必须在[...]字符类中进行转义。