2017-10-19 3 views
1

文字列方程式を2つの配列、つまり数値と演算子に分割しようとしています。Java:文字列方程式を数値と演算子に分割する

String expr = "3/20.0"; 

String[] numbers = expr.split("[+-/\\*]"); 
String[] operators = expr.split("[^+-/\\*]+"); 

System.out.println(Arrays.toString(numbers)); 
System.out.println(Arrays.toString(operators)); 

しかし、私のコードが出力します:[3, 20, 0] [, /, .]

しかし、私はカンマ演算子アレイの前にある理由を、私はわからない[3, 20.0] [, /]

を取得しようとしているが、主に私はしたいです20.0をnumbers配列の要素の1つとし、小数点を演算子配列から外してください。

+0

FWIW: '+ - /'文字クラスに+」という意味ではありませんか - または/ "それは_between_ +と/の間の任意の文字を意味します。これはASCIIで "+、 -//"のセットです。 (これが "。"にマッチする理由です)文字クラスに - を入れたい場合は、末尾に置いてください。 –

答えて

1

カンマは要素のパーティションを表示しています。
この[,は、最初の要素が空白であることを意味します。

私はJavaの分割が空の要素を削除することができれば知らないが、[\d.]+

上の事業者については[^\d.]+
、スプリット上のこれらの番号については、正規表現

、スプリットを試してみて」 dをしたい場合は、
チェックポストプロセスを実行してください。


スプリットノート -
[\d.]+は、一般的に、すなわち、数字と一致するクラスです。 'dd.dd'(葉演算子
[^\d.]+は、演算子(葉数)と一致ある

+0

うわー、これは動作します!それらがそれぞれ意味することを私に説明できますか? – softboy

+0

@softboy - OK、いくつかのメモを追加しようとしました.. – sln

関連する問題