2013-06-21 96 views
0

的特定部分看來,我需要的工作方式相同需要用戶輸入

var inPar = userIn.substring(userArray.lastIndexOf("(")+2, userArray.lastIndexOf(")")+2); 

代碼...返回NO3)當用戶輸入的化學式的Cu(NO3)2。

如果用戶輸入H(NO3)2或只是(NO3)2,則當前代碼(以上)根本不是動態的,因爲它也必須返回NO3)。

我認爲正則表達式是最有效的方法嗎?

+0

取決於。用戶可以輸入多少化合物?什麼?你爲什麼要在你的結果中使用括號? – LonelyWebCrawler

+0

截至目前,是的,他們可以輸入任何內容,但我的代碼目前僅適用於一組括號。我需要括號,因爲我有「)」表示一個while語句的結束,而這個while語句又用()來表示一切。 – Rygh2014

+0

如果你要找的所有東西都是「內在的東西」,那麼Mixthos的代碼就可以工作。 – LonelyWebCrawler

回答

2

此代碼也應該這樣做:

var inPar = userIn.replace(/^.*\((.*\)).*$/, '$1'); 

我不明白很多關於化學公式,所以我不知道一個更加動態的方法應該是什麼樣子。抱歉。

+0

爲什麼不用'/\((.*)\)/'?不需要從頭到尾搜索。 – LonelyWebCrawler

+0

另外,'替換'似乎是一個奇怪的方式來做到這一點。爲什麼不用'/\((.*)\)/。exec(userIn)[1]'? – LonelyWebCrawler

+0

這可以工作,但不包括NO3之後的「)」。 – Rygh2014