2013-06-21 2 views
0

Кажется, что мне нужна код, который работает так же, какНужна определенная часть пользовательского ввода

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

... который возвращает NO3), когда пользователь вводит химическую формулу Cu (NO3) 2.

Текущий код (выше) не является динамическим вообще, поскольку он также должен возвращать NO3), если пользователь вводит, например H (NO3) 2 или просто (NO3) 2.

Я считаю, что регулярное выражение будет самым эффективным способом сделать это?

+0

Зависит. Каков диапазон соединений, которые пользователь может ввести? Что-нибудь? И почему вы хотите скобки в своих результатах? – LonelyWebCrawler

+0

На данный момент да, они могут вводить что угодно, хотя мой код работает только для одного набора круглых скобок. Я хочу круглые скобки, так как у меня есть ")", означающий конец инструкции while, которая, в свою очередь, получает вес всего с помощью(). – Rygh2014

+0

Если все, что вам нужно, это «что-то внутри скобок», тогда работает код Mixthos. – LonelyWebCrawler

ответ

2

Этот код должен делать то же самое:

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

Я не понимаю, много о химических формулах, так что я не знаю, что более динамичный подход должен выглядеть следующим образом. Сожалею.

+0

Почему бы не '/\((.*)\)/'? Не нужно искать от начала до конца. – LonelyWebCrawler

+0

Кроме того, 'replace' кажется странным способом сделать это. Почему бы не '/\((.*)\)/. Exec (userIn) [1]'? – LonelyWebCrawler

+0

Это работает, но не включает в себя ")" после NO3. – Rygh2014

Смежные вопросы