第一个问题: -
多重声明String myString;
第二个问题:-
字符串初始化不正确。末尾缺少双引号。从末端拆下支架和支架。
String myString = "a+b-c*d/e";
第三个问题: -
使用 String 对象初始化的字符串数组,而不是数组对象。
String[] result=new String(); // Should be `new String[size]`
事实上,您不需要事先初始化您的数组。
第四个问题:-
String.split
将正则表达式作为参数,您已经传递了一个数组。不管用。
采用: -
String[] result = myString.split("[-+*/]");
拆分所有运营商。
关于你的这个声明: -
以及=, -, *, d, /
(也是一组运算符)分别。
我不明白你在这里想要什么。您的示例字符串不包含=
. 并且d
不是operator
. 请查看是否要编辑它。
更新 : -
如果您打算将运算符也保留在数组中,则可以使用此正则表达式:-
String myString= "a+b-c*d/e";
String[] result = myString.split("(?<=[-+*/])|(?=[-+*/])");
System.out.println(Arrays.toString(result));
/*** Just to see, what the two parts in the above regex print separately ***/
System.out.println(Arrays.toString(myString.split("(?<=[-+*/])")));
System.out.println(Arrays.toString(myString.split("(?=[-+*/])")));
输出 : -
[a, +, b, -, c, *, d, /, e]
[a+, b-, c*, d/, e]
[a, +b, -c, *d, /e]
(?<=...)
手段look-behind assertion
,(?=...)
手段look-ahead assertion
。