2017-10-19 320 views
1

我想將字符串方程拆分成兩個數組:數字和運算符。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是數組數組中的一個元素,並保留我的運算符數組中的小數點。

+0

FWIW:'+ - /'在字符類並不意味着「+或 - 或/「表示任何字符_between_ +和/。在ASCII中是「+, - 。/」。 (這就是爲什麼它匹配「。」)如果你想在字符類中放置一個,就把它放在最後。 –

回答

1

逗號僅顯示您的元素分區。
[,表示第一個元素爲空。

嘗試在[^\d.]+
對於運營商而言,這些分裂原正則表達式

對於數字,各執[\d.]+

而且,我不知道Java的拆分可以刪除空的元素,但你」如果可以,d想
做檢查過程。


斯普利特的注意事項 -
[\d.]+是一個大體匹配的數字,即類。 'dd.dd'(葉運營商
[^\d.]+它匹配運營商(葉數

+0

哇,這個作品!你能向我解釋這些意思是什麼嗎? – softboy

+0

@softboy - 好吧,試着添加一些註釋.. – sln