2011-09-14 7 views
1

Я работаю над регулярным выражением, и мне нужно извлечь две части выражения, которое импортируется через flashvars.Регулярное выражение помощи AS3?

//sample data similar to what comes in from the flashvars. Note that the spaces are not after the and symbol, they are there because the html strips it. 
var sampleText:String = "height1=60& amp;height2=80& amp;height3=95& amp;height4=75& amp;" 

var heightRegExp:RegExp = /height\d/g; //separates out the variables 

var matches:Array = sampleText.match(heightRegExp); 

Теперь мне нужно помочь изолировать значения каждой переменной и помещая их в массив ... Например, 60, 80, и т.д. Я знаю, что я должен быть в состоянии написать это регулярное выражение, но я просто не могу получите правильное выражение exec. Любая помощь могла бы быть полезна!

+1

Вы просто пытаетесь получить доступ к свойствам строки flashvars? Если это так, вы должны просто использовать объект loaderInfo.parameters. – gthmb

+0

Нет, я могу получить доступ к параметрам индивидуально, используя обычные методы flashvars. Вместо этого я хотел бы использовать эту строку для динамического создания повторно используемого объекта. Следовательно, пройденные пары имя/значение будут различаться по назначению и должны быть проанализированы для разных массивов. – Shelley

ответ

0

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

var keyvalues:Array = sampleText.split("& amp;"); 
var firstkey:String = keyvalues[0].split("=")[0]; 
var firstvalue:String = keyvalues[0].split("=")[1]; 

Помогло бы это в том, что он не использует RegEx?

+0

Почему бы просто не сделать: var value: String = this.loaderInfo.properties ['key']? :) – gthmb

+0

Я предполагаю, что строка, которую она упоминает, является полным значением внутри ключа. поэтому он говорит «& amp;» – ghost23

+0

Проблема в том, что в URL-адресе есть разные типы переменных. Он создает динамическую таблицу, поэтому в конечном итоге появятся строки, столбцы и заголовки, поэтому мне нужно будет поместить их в разные массивы. Я не могу поместить все значения в один и тот же массив ... поэтому я думаю, что сначала нужно разобрать, какие значения я хочу разместить в массивах. И я никогда не узнаю, сколько будет. Одна таблица может иметь два заголовка и 4 строки, а другая может иметь 3 столбца и один заголовок и 5 строк ... это имеет смысл? – Shelley

0

Ни =, & или; специальные символы, так что я думаю, что вы можете использовать

=|& 

в разделенном вызове, а затем значения будут в нечетных индексах и названиях стилей будет высоты 2 будут в четных индексах.

0

Вы можете использовать URLUtil.stringToObject()

Что-то, как это должно работать:

var s:String = "name=Alex&age=21"; 
var o:Object = URLUtil.stringToObject(s, "&", true); 

Однако, если вы просто получать FlashVars, вы должны вытащить их из loaderInfo корня.

this.root.loaderInfo.parameters;