![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2009
Сообщений: 20
|
Существует строка следующего вида:
{
variable01:'value01',
variable02 : 'value02',
variable03 :'value03' ,
variable04: 'value04'
}
Библиотека JSON, которая у меня есть, с задачей не справляется, хочет чтобы имена переменных были в кавычках. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
var s:String = "{ variable01:'value01', variable02 : 'value02', variable03 :'value03' , variable04: 'value04' }" var r:RegExp = /(\w+)[:\s]+'(\w+)'/; if (r.test(s)) { var resultObject:Object = new Object(); var result:Array; while ((result = s.match(r)) != null) { var resultStr:String = result[0].toString(); var resLength:int = resultStr.length; s = s.substring(result.index+resLength); resultObject[result[1]] = result[2]; } } trace (resultObject.variable02); // value02
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 20
|
mayakwd, замечательный ответ, не лениво писать было? я бы поленился)
Wolsh, я почти так же сделал, только без регулярных, сейчас на ваш вариант сяду. Спасибо) |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 20
|
Поковырялся в гугле, пришел к следующему варианту, выполняет задачу полностью. Все оказалось короче, чем думалось.)
var str:String = "{ name: 'John', age:'50.5', IP:'192.168.0.1', enc:'%$^%$#*&*' }";
//
var reg:RegExp = /(\w+)[:\s]+'(\S+)'/ig;
var result:Object = reg.exec(str);
var o:Object = new Object();
while (result != null)
{
o[result[1]] = result[2];
result = reg.exec(str);
}
for (var prop:String in o)
{
trace(prop + " : " + o[prop]);
}
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
)) Да, с match я пожалуй поторопился
Так красивее будет)
__________________
Reality.getBounds(this); |
|
|||||
|
Modus ponens
|
/(\w+)[:\s]+'(\S+)'/ig; - G-код
![]() Варинт, который не пройдeт валидацию: Должно быть, как минимум '([^']*)'. Кроме того, флаг i не нужен, ну и много чего остального зависит непосредственно от конкретной ситуации, и что именно нужно сделать. Еще G-код: В AS3 выражения в if / while и т.п. автоматически кастуются к Boolean.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 20
|
Точно, с пробелом не пролазит, ваш вариант, как всегда — более верный.
Задача этого куска кстати несложная - получить обратно объект, созданный для SWFObject в теле HTML. |
|
|||||
|
Modus ponens
|
Тогда задача в общем случае одним регулярным выражением не решается. Это хорошо, если все параметры будут заданы, как примитивы, а если там объекты или вызовы методов? Да, даже не нужно таких сложностей, достаточно одной экранированой кавычки, чтобы регексп оказался бесполезным.
Но, если надеятся, что все, параметры должны быть строками, то можно как-то так:
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 02.03.2010 в 21:56. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|