String s = " x + y ";
String[] sArr = s.split("\\s*-|+|*|/\\s*");
我有一个字符串,如:" x + y "
我想要得到与元素的数组:x, +, y
(无空格),而不是+
,如果我用-,/,*
他们也应该工作。我在尝试类似上面的代码,但由于+
和/或*
,这给出错误。它将它们作为正则表达式的一部分。如何解析x + y,以便在Java中获得x,+,y(一个数组)?
我该如何做这项工作?请帮忙。
String s = " x + y ";
String[] sArr = s.split("\\s*-|+|*|/\\s*");
我有一个字符串,如:" x + y "
我想要得到与元素的数组:x, +, y
(无空格),而不是+
,如果我用-,/,*
他们也应该工作。我在尝试类似上面的代码,但由于+
和/或*
,这给出错误。它将它们作为正则表达式的一部分。如何解析x + y,以便在Java中获得x,+,y(一个数组)?
我该如何做这项工作?请帮忙。
String s = " x + y ";
String[] sArr = s.trim().split("\\s+");
System.out.println(sArr[0]+":"+sArr[1]+":"+sArr[2]);
输出:x:+:y
如果输入字符串之间不包含空格,则代码将不起作用。 –
应该有一些分隔符将一个词与另一个词分开。在这个问题中,OP显然要求按空间分开。否则,如果您不知道分隔符是什么,那么如何将字符串分隔为“x + 25 + 50”? –
是的,OP可能想要使用运算符号分隔字符串。 –
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]
你试过白色空间只有分裂? 's.split( “\\ S *”)'。分裂的论点告诉你什么应该来自你想要保留的元素。既然你想保留'+',它不应该是'split'正则表达式的一部分,除非你正在做一些非常棘手的事情。 – ajb
's.replaceAll(“\\ s”,“”)。split(“”)' –