如何解析x + y以便在Java中获得x,+,y(数组)?

时间:2017-03-06 04:58:09

标签: java regex

String s = " x  +  y  ";
String[] sArr = s.split("\\s*-|+|*|/\\s*"); 

我有一个字符串,例如:" x + y "我想要一个包含元素的数组:x, +, y(没有空格)而不是+,如果我使用-,/,*他们也应该工作。我正在尝试类似上面代码的内容,但由于+和/或*,这会产生错误。它将它们作为正则表达式的一部分。

我该如何使这项工作?请帮忙。

2 个答案:

答案 0 :(得分:2)

String s = " x  +  y - z / x * y ";
s = s.replaceAll("\\s+", "");

第一种选择:

String[] sArr = s.split("((?<=[\\+\\-\\*/])|(?=[\\+\\-\\*/]))");
System.out.println(Arrays.toString(sArr));

参考:https://stackoverflow.com/a/2206432/5352399

第二种选择:

String[] sArr = s.split("\\s*");
System.out.println(Arrays.toString(sArr));

在这两种情况下,输出:

[x, +, y, -, z, /, x, *, y]

如果您不想在输出中使用运算符,则可以执行以下操作。

String[] sArr = s.split("\\s*[-,+,*,/]\\s*");
System.out.println(Arrays.toString(sArr));

输出:

[x, y, z, x, y]

答案 1 :(得分:1)

String s = " x  +  y  ";
String[] sArr = s.trim().split("\\s+"); 
System.out.println(sArr[0]+":"+sArr[1]+":"+sArr[2]);

输出:x:+:y