2013-01-07 18 views
1

最近,我問過類似的問題,但我需要一些更多的幫助。如何分割字符串以便在Java中進行數學使用?

用戶將能夠進入一個字符串,例如:

"-5-1/-2" 

它需要:用+,劃 - ,*,/,(,) 和負數應保持在一起,在這種情況下,-5和-2應該保持在一起。

這是我目前有:

String userStrWithoutSpaces=userStr.replaceAll(" ", ""); 
String[] tokens = userStrWithoutSpaces.split("(?<=[\\-+*/=()])|(?=[()\\-+*/=])"); 

除了保持負數在一起,其中一期工程。

在此先感謝。

+7

爲什麼不使用一個實際的解析器不拆? –

+1

我同意,這是你的 – jackcogdill

+0

你是在正確的軌道上進行圖書館這樣的,所以保持這件事。雖然如果你需要快速修復,解析器! – Coffee

回答

1

我會用JFlex。你需要一個詞法分析器,一段代碼,它會給你一些輸入文本的標記。 JFlex是一個詞法分析器的生成器。 非常快速和可靠的分析儀。只指定了一個規則,形式類同正則表達式,非常方便。所有的低級別工作都是JFlex。這幅圖描繪了JFlex的理念:

enter image description here

+0

我很想去,但它需要手工完成。 – Wrath

+0

@Wrath - 爲什麼用手? –

2

試試這個:

String[] tokens = userStrWithoutSpaces.split(
    "(?<=[+*/=()])|((?<=-)(?!\\d))|(?=[()\\-+*/=])"); 

它使用一個超前時連字符後按數字

相關問題