这个问题已经在这里有了答案: > How to split a string, but also keep the delimiters? 23个
我有一个用分隔符@和$分隔的字符串“ role1 @ role2 @ role3 @ role4 $arole”.我用下面的java代码
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
但是我的要求是在结果中保留定界符.因此,结果必须符合要求
role1
@role2
@role3
@role4
$arole
我分析了Apache Commons StringUtils方法来做到这一点,但是找不到任何线索.
任何库类都可以达到上述预期结果?
最佳答案
您可以使用具有正向前瞻性的简单拆分:
String str = "role1@role2@role3@role4$arole";
String[] res = str.split("(?=[@$])");
System.out.println(Arrays.toString(res));
// => [role1, @role2, @role3, @role4, $arole]
(?= [@ $])正则表达式匹配字符串中任何位置,后跟@或$符号(请注意,$不必在[…]字符类内转义).