的特定部分看來,我需要的工作方式相同需要用戶輸入
var inPar = userIn.substring(userArray.lastIndexOf("(")+2, userArray.lastIndexOf(")")+2);
代碼...返回NO3)當用戶輸入的化學式的Cu(NO3)2。
如果用戶輸入H(NO3)2或只是(NO3)2,則當前代碼(以上)根本不是動態的,因爲它也必須返回NO3)。
我認爲正則表達式是最有效的方法嗎?
的特定部分看來,我需要的工作方式相同需要用戶輸入
var inPar = userIn.substring(userArray.lastIndexOf("(")+2, userArray.lastIndexOf(")")+2);
代碼...返回NO3)當用戶輸入的化學式的Cu(NO3)2。
如果用戶輸入H(NO3)2或只是(NO3)2,則當前代碼(以上)根本不是動態的,因爲它也必須返回NO3)。
我認爲正則表達式是最有效的方法嗎?
此代碼也應該這樣做:
var inPar = userIn.replace(/^.*\((.*\)).*$/, '$1');
我不明白很多關於化學公式,所以我不知道一個更加動態的方法應該是什麼樣子。抱歉。
爲什麼不用'/\((.*)\)/'?不需要從頭到尾搜索。 – LonelyWebCrawler
另外,'替換'似乎是一個奇怪的方式來做到這一點。爲什麼不用'/\((.*)\)/。exec(userIn)[1]'? – LonelyWebCrawler
這可以工作,但不包括NO3之後的「)」。 – Rygh2014
取決於。用戶可以輸入多少化合物?什麼?你爲什麼要在你的結果中使用括號? – LonelyWebCrawler
截至目前,是的,他們可以輸入任何內容,但我的代碼目前僅適用於一組括號。我需要括號,因爲我有「)」表示一個while語句的結束,而這個while語句又用()來表示一切。 – Rygh2014
如果你要找的所有東西都是「內在的東西」,那麼Mixthos的代碼就可以工作。 – LonelyWebCrawler