第 1 の問題: -
複数宣言String myString;
2番目の問題: -
文字列が正しく初期化されていません。末尾に二重引用符がありません。両端からブラケットとブレースを取り外します。
String myString = "a+b-c*d/e";
3番目の問題: -
配列オブジェクトではなく、String オブジェクトで初期化された文字列配列。
String[] result=new String(); // Should be `new String[size]`
実際、事前に配列を初期化する必要はありません。
4番目の問題: -
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
。