I need to split an expression like
a+b-c*d/e
and get a
, b
, c
, d
, e
seperately(as array of strings) as well as =
,-
,*
,d
,/
(also an array of operators) separately. I have tried like:
String myString;
String myString={"a+b-c*d/e");
String[] result=new String();
String[] separator=new String[]{"+","-","/","*"};
result=myString.split(separator);
But, it shows an error. How to solve it?
1st problem: -
Multiple declaration of String myString;
2nd problem: -
String initialized incorrectly. Double quotes missing at the ends. Remove bracket and brace from the ends.
String myString = "a+b-c*d/e";
3rd problem: -
String array initialized with an String object, rather than an array object.
String[] result=new String(); // Should be `new String[size]`
In fact, you don't need to initialize your array before hand.
4th problem: -
String.split
takes a Regular Expression as argument, you have passed an array. Will not work.
Use: -
String[] result = myString.split("[-+*/]");
to split on all the operators.
And regarding your this statement: -
as well as
=, -, *, d, /
(also an array of operators) separately.
I don't understand what you want here. Your sample string does not contains =
. And d
is not an operator
. Please see if you want to edit it.
UPDATE : -
If you mean to keep the operators as well in your array, you can use this regex: -
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("(?=[-+*/])")));
OUTPUT : -
[a, +, b, -, c, *, d, /, e]
[a+, b-, c*, d/, e]
[a, +b, -c, *d, /e]
(?<=...)
means look-behind assertion
, and (?=...)
means look-ahead assertion
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With