如何解析x+y以便在Java中得到x,+,y(一个数组)?
我有一个字符串,比如:x+y我想得到一个包含元素的数组:x,+,y没有空格而不是+,如果我使用-,/,*它们也应该可以工作。我尝试了上面的代码,但是由于+和/或*,这会产生错误。它将它们作为正则表达式的一部分 我怎样才能做到这一点?请帮忙如何解析x+y以便在Java中得到x,+,y(一个数组)?,java,regex,Java,Regex,我有一个字符串,比如:x+y我想得到一个包含元素的数组:x,+,y没有空格而不是+,如果我使用-,/,*它们也应该可以工作。我尝试了上面的代码,但是由于+和/或*,这会产生错误。它将它们作为正则表达式的一部分 我怎样才能做到这一点?请帮忙 String s = " x + y "; String[] sArr = s.split("\\s*-|+|*|/\\s*"); 输出:x:+:y 第一个备选方案: String s = " x + y - z / x * y "; s = s
String s = " x + y ";
String[] sArr = s.split("\\s*-|+|*|/\\s*");
输出:x:+:y
第一个备选方案:
String s = " x + y - z / x * y ";
s = s.replaceAll("\\s+", "");
String[] sArr = s.split("((?<=[\\+\\-\\*/])|(?=[\\+\\-\\*/]))");
System.out.println(Arrays.toString(sArr));
在这两种情况下,输出:
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));
你试过在空白处分开吗?s、 拆分\\s*。split的参数告诉您要保留的元素之间应该有什么。由于您希望保留+,因此它不应该是split正则表达式的一部分,除非您正在执行一些非常棘手的操作。s.replaceAll\\s,.split如果输入字符串之间不包含空格,则代码将无法工作。应该有一些分隔符来分隔一个单词和另一个单词。在这个问题上,OP显然要求按空间分开。否则,如果您不知道分隔符是什么,那么如何分隔像x+25+50这样的字符串?是的,OP可能希望使用运算符符号分隔字符串。
String[] sArr = s.split("\\s*[-,+,*,/]\\s*");
System.out.println(Arrays.toString(sArr));
[x, y, z, x, y]