【问题标题】: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 可能能够简单地在空间上进行拆分,但显然情况并非如此。

标签: java string csv


【解决方案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?

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2012-02-14
      • 1970-01-01
      • 2019-06-11
      • 2018-07-23
      • 1970-01-01
      相关资源
      最近更新 更多