第一の問題: - 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
ではありません。編集したいかどうか確認してください。
UPDATE: - あなたは配列に同様の演算子を維持することを意味する場合は、この正規表現を使用することができます
: -
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]
(?<=...)
は、look-behind assertion
を意味し、(?=...)
は、look-ahead assertion
。
は、なぜあなたはしたいですか: - '=、 - 、*、D、/'バック? –
'd'はタイプミスだと思いますか?オペランドと演算子のリストを別にしたいですか?この場合、 'd'はマッチしません... –