StringUtils 或任何库类方法来保留分隔符[重复]
Posted
技术标签:
【中文标题】StringUtils 或任何库类方法来保留分隔符[重复]【英文标题】:StringUtils or any library class method to preserve the delimiter [duplicate] 【发布时间】:2017-04-07 11:09:48 【问题描述】:我有一个字符串“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 方法来做到这一点,但找不到任何线索。
任何库类可以获得上述预期结果?
【问题讨论】:
【参考方案1】:您可以使用简单的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
(?=[@$])
正则表达式匹配字符串中的任何位置,该字符串后跟@
或$
符号(注意$
不必在@987654328 内转义@字符类)。
【讨论】:
以上是关于StringUtils 或任何库类方法来保留分隔符[重复]的主要内容,如果未能解决你的问题,请参考以下文章
org.apache.commons.lang.StringUtils的jar包是啥