![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
Подсобите с такой задачей:
Нужно выполнить проверку баланса скобок в текстовой области и если открывающейся скобке не соответствует закрывающаяся, то вывести ошибку во вторую текстовую область. -------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
| Michael.de |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 2 Всего: 9 |
s1lver, каких скобок? Таких: ( ) или ещё [ ] и { } ?
Например так: есть стринг, с помощью charAt() считываем в цикле каждый знак и сравниваем его с открывающейся и закрывающейся скобками. Открывающая скобка - плюсуем 1 в переменную, закрывающая - минусуем. В конце смотришь: переменная не равна 0 (как и в начале) - ошибка. Попробуй написать это сам, а мы поможем |
|||
|
||||
| Itsys |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 12 Всего: 34 |
А можно с помошью регулярки:
сначала ищем все нормальные в цикле wile exec регулярку
меняем тестируемую переменную на второй элемент возвращенного массива а после проверяем наличие открывающей/закрывающей скобки
и если находим, выводим сообщение ЗЫ если надо проверять не только (), то цикл запускается несколько раз. |
||||
|
|||||
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
Круглых вообще-то, про те я даже не подумал Это сообщение отредактировал(а) s1lver - 6.12.2008, 11:30 -------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
Вот,тока чур сильно не ругать за глупость
-------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
Не, наверное надо так сделать, поправьте где ошибусь:
-------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
| Michael.de |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 2 Всего: 9 |
s1lver, вот как пример:
Это сообщение отредактировал(а) Michael.de - 6.12.2008, 19:26 |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 12 Всего: 34 |
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Michael.de, )))))((((( - галактеко в полной безопасносте...
Itsys, (1+(2+3)*5) - галактеко в опасносте... Вот, написалось...
P.S. Где-то на PHP club'е видел регулярку рекурсивную для анализа вложенности скобок. Правда она для JS, imho, не будет работать... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
Конечно -------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
| Michael.de |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 2 Всего: 9 |
Так я и не спорю, просто в первом посте не написано, что это будет применяться для анализа мат. выражения. А алгоритм я знаю
P.S. Пару лет назад я написал (на яве) пару классов, которые получали строку типа sin(cos(x-2))+x^(x/2-Pi/4^(5-tan(sin(x-1)))) ... и т.п. , анализировали на мат. корректность записи и считали (при зад. х) значение выражения. Т.е. как бы JavaScript, но... без eval() |
|||
|
||||
| s1lver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 14.12.2007 Где: Россия Репутация: нет Всего: нет |
А что сюда еще можно прикрутить? Так на всякий случай...
-------------------- Я собрался жить вечно - пока все идет нормально! |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |