2011-09-14 46 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

抱歉不直接用regexes回答問題。我會這樣做:

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

問題是,有不同類型的變量進來的網址。它創建一個動態表,所以最終會有行和列以及標題,所以我需要能夠將它們放入不同的數組中。我不能把所有的值放在同一個數組中......所以我想我首先需要解析出我想放入哪些數組中的值。我永遠不會知道會有多少人。一個表可能有兩個標題和4行,另一個可能有3列,一個標題和5行......這有意義嗎? – Shelley

0

既不是=,&或;是特殊字符,所以我覺得你可以在一瞬間調用中使用

=|& 

,然後值將在奇數索引和身高2樣式名稱將在偶數索引。

0

您可以使用URLUtil.stringToObject()

像這樣的東西應該工作:

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

不過,如果你是剛剛起步的Flash變量,應該從根loaderInfo拉他們。

this.root.loaderInfo.parameters;