我有一个用分隔符@和$分隔的字符串“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方法来做到这一点,但无法找到任何线索。
任何获得上述预期结果的库类?
答案 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
(?=[@$])
正则表达式匹配字符串中的任何位置,后跟@
或$
符号(请注意$
不会必须在[...]
字符类中进行转义。