如何将字符串拆分为分隔符也是标记的数组? [复制]
Posted
技术标签:
【中文标题】如何将字符串拆分为分隔符也是标记的数组? [复制]【英文标题】:How to split string to array where delimeter is also a token? [duplicate] 【发布时间】:2016-09-24 07:00:17 【问题描述】:如何将字符串拆分为分隔符也是标记的数组?例如,我有一个字符串"var1 * var2 + var3"
或"var1*var2+var3"
,我想用分隔符"[\\+\\/\\+\\-]"
分割这个字符串,这样结果就是这样的数组:
"var1 ", "*", " var2 ", "+", " var3"
(或"var1", "*", "var2", "+", "var3"
)
我该怎么做?
【问题讨论】:
@Tim 除空格外,应根据样本输出保留 关于上述评论,我之前曾评论说,OP 可能能够简单地在空间上进行拆分,但显然情况并非如此。 【参考方案1】:实际上,您的分隔符应该是空格或空格:
string.split("(\\b)+")
这由空格分隔,因此运算符和变量最终都在结果数组中。
【讨论】:
按照OP保留空格【参考方案2】:使用不消耗的分隔符。向look-behinds 和look-aheads 打个招呼,它们断言但不消耗:
String array = str.split("(?<=[*+/-])|(?=[*+/-])");
正则表达式匹配数学运算符之后或之前。
还要注意在字符类中如何不需要转义数学运算符。
【讨论】:
【参考方案3】:你不能只用空格分割吗?
String splittedString = string.split(" ");
另外,同样的问题:
How to split a string, but also keep the delimiters?
【讨论】:
以上是关于如何将字符串拆分为分隔符也是标记的数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章