| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > режем строку в масив |
| Автор: KuZyagroup 25.2.2008, 19:21 | ||
| Есть строка #smth(smthelse*=smthelseone) Хочу порезать в массив split ф-цией, трабла в том что я не понимаю как задать два символа, а любой из smth может быть * Для ясности (что б не прибегать к телепатии дам примеры)
|
| Автор: ksnk 25.2.2008, 22:54 | ||
вот так? Правда потом придется пустые строки повыкидывать... |
| Автор: KuZyagroup 25.2.2008, 23:10 | ||
| спасибо, а я забыл что * - символ перед которым нужен бэк-слэш. П.С. Вот список всех таких символов если кому нибудь понадобится.
|
| Автор: AKS 26.2.2008, 09:20 |
| Если мои предположения по поводу предназначения этих строк верны, то тогда имели бы смысл следующие действия. Создать шаблон, на соответствие которому будет проверяться строка (ведь нет смысла разбивать строку, не зная ее значения, а потом еще пытаться использовать непредсказуемый результат, да еще, как отмечено, выкидывать пустые строки). Затем вызвать метод match на строке для проверки совпадения с шаблоном, тем самым убивая сразу двух зайцев:
|
| Автор: KuZyagroup 26.2.2008, 14:43 | ||||
| AKS, я не до конца понял что вы имели в ввиду по этому сформулирую задачу которую я себе поставил. Строка содержит три атрибута
Связаных #,(,*=|==|ect,) Например
|
| Автор: AKS 26.2.2008, 19:21 |
А что непонятного? Вы пишите: Просто переведите это на язык регулярных выражений, не забыв заключить символы, описывающие три интересующих фрагмента строки, в захватывающие скобки. Затем используйте метод match (String.prototype.match) или exec (RegExp.prototype.exec). |
| Автор: KuZyagroup 26.2.2008, 23:54 |
| Если я не ошибаюсь то в match-е описывают содержимое выборки. То есть что брать, а в сплит-е чем разделено то что брать Почему по Вашему match будет рациональней чем split P.S. Что до пустых строк которые даёт split, то я точно знаю что это будет 0-вая и 4-тая,- по этому не считаю их наличие минусом. |
| Автор: ksnk 27.2.2008, 07:56 | ||
Гыы! забавно... Не думал, что split настолько различается. Действительно, match будет поприличнее
Правда магии здесь немного больше Хотя можно,конечно, для кроссбраузерности в первом варианте добавить какой-нибудь мусор сначала и с конца строки, но это немного не спортивно |
| Автор: KuZyagroup 27.2.2008, 08:45 |
| AKS, ksnk, ага понял, теперь осталось полностью вкурить /#(.*?)\((.*?)\*?=?=(.*?)\)/ |
| Автор: AKS 27.2.2008, 09:06 | ||||
Так ведь она (магия) того стоит. Взять хотя бы упомянутый margin-left=15px. Если задать неверное значение, например '*15px', обращаясь к объекту style, то IE выдаст ошибку:
А если к написанию регвыра подойти чуть серьезней, то подобного можно избежать.
Вы этому (в смысле добавки мусора) у John Resig’а научились, увлекшись jQuery? ;) |
| Автор: ksnk 27.2.2008, 10:12 | ||
Все в рамках заявленной спецификации
Нее! Это я и сам умею ;-) |
| Автор: AKS 27.2.2008, 10:57 |
Да я ведь не имел ввиду ваш регвыр. Просто хотел написать, что можно установить очень жесткие условия (во избежание, т.с.). Но теперь уж замечу, что ваш регвыр "пропустит" уже упомянутые *15px, а наверно не стоит... Я тоже умею, если что. ;) |
| Автор: ksnk 27.2.2008, 11:49 |
Замечу, что "упомянутые" вами, а не автором |