如何将字符串拆分为分隔符也是标记的数组? [复制]

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?

【讨论】:

以上是关于如何将字符串拆分为分隔符也是标记的数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串拆分为标记并将标记分成两个单独的数组

如何拆分字符串但在java中保留分隔符? [复制]

如何使用分隔符数组在 Java 中使用多个分隔符拆分字符串? [复制]

如何通过分隔符将字符串拆分为数组?

将字符串拆分为标记并在 Perl 中存储分隔符

如何在awk中将分隔字符串拆分为数组?