2

例如:strEquation="36+5-8X2/2.5"

我的代码是:

String[] tmp = strEquation.split("[X\\+\\-\\/]+");

for(int i=0; i<tmp.length; i++)
    Log.d("Split array",tmp[i]);

和我认为的输出:

36
5
8
2
2.5

我希望tmp字符串数组也将放入我要拆分的字符,如下所示:

tmp[0] = 36
tmp[1] = +
tmp[2] = 5
tmp[3] = -
tmp[4] = 8
tmp[5] = X
tmp[6] = 2
tmp[7] = /
tmp[8] = 2.5

知道该怎么做吗?

4

2 回答 2

7

X + - /在每个字符之前或之后拆分如何?顺便说一句,您不必转义+/在字符类 ( [...])

String[] tmp = strEquation.split("(?=[X+\\-/])|(?<=[X+\\-/])");

似乎可以解决问题。

于 2013-09-11T21:52:16.170 回答
1

我会说您正在尝试获取所有匹配项而不是拆分字符串

Matcher m = Pattern.compile("[X+/-]|[^X+/-]+").matcher(strEquation);
while (m.find()) {
  System.out.println(m.group());
}

但上面的答案更聪明:)

另外:您不需要在方括号内转义+和字符;/只有当它不是列表中的第一个或最后一个字符时,减号 ( -) 才需要转义

于 2013-09-11T22:04:09.553 回答