2009-12-22 65 views
1

我工作的柔性现场,解析字符串,用动作脚本

我想分析下面的字符串: http://virtual.s1.c7beta.com/rpc/raw?c=Pictures&m=download_picture&key=a4fb33241662c35fe0b46c7e40a5b416&session_id=2b7075f175f599b9390dd06f7b724ee7

,并从中取出& SESSION_ID = 2b7075f175f599b9390dd06f7b724ee7。

我该怎么做。

也晚些时候,当我从数据库没有session_id的URL,我会附加新的session_id它。请告诉我如何做到这一点。

问候 Zeeshan

回答

4

不是短期的版本,但你可以用URLVariable把所有的字段(名称,值)为对象,然后添加或删除任何你想要的字段。

单独的网址和查询:从查询

var url : String = "http://virtual.s1.c7beta.com/rpc/raw?c=Pictures&m=download%5Fpicture&key=a4fb33241662c35fe0b46c7e40a5b416&session%5Fid=2b7075f175f599b9390dd06f7b724ee7"; 
var idxQMark : int = url.indexOf("?"); 
var qry : String = ""; 

构建url变量

var uv : URLVariables = new URLVariables(); 
if (idxQMark > 0) { 
qry = url.substr(idxQMark + 1); 
url = url.substr(0, idxQMark); 
uv.decode(qry); 
} 

您现在可以访问任何你需要的字段或删除

delete uv.session_id; 

重建查询时需要

qry = uv.toString(); 

//找回你新的URL

if (qry != "") { 
url = url + "?" + qry; 
} 
+0

尼斯和强大。 – Aaron 2009-12-23 01:15:13

+0

@Tegeril谢谢:) – Patrick 2009-12-23 01:39:24

1

如果你不相信的SessionID将是最后一次,你可以使用AS3 string.split functionhttp在&分裂://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/ String.html#拆分%28%29

然后用一个for循环离开,通过使用该功能string.indexOf到http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html#indexOf%28%29看“SESSION_ID”是指数与SESSION_ID开头的字符串重建串0

0

你可以在Flex中使用正则表达式...这是一个example

0

假设会话ID将永远是在查询字符串中的最后一个变量:

var newStr:String = myStr.slice(0, myStr.indexOf("&session")); 
2

对于URI解析检查出的as3corelib提供的URI类。 http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/net/URI.as

对于您的具体情况,您可以清除不需要的URI部分。

var url : String = "http://virtual.s1.c7beta.com/rpc/raw?c=Pictures&m=download%5Fpicture&key=a4fb33241662c35fe0b46c7e40a5b416&session%5Fid=2b7075f175f599b9390dd06f7b724ee7"; 
var uri : URI = new URI(url); 
uri.query = ""; 
uri.fragment = ""; 
var shortenedUrl : String = uri.toString(); 

或者,如果你知道你想从刚刚方案,授权和路径构建您的网址(即你不需要保留端口,用户名,密码等),您可以建立网址从零件。

var shortenedUrl : String = uri.scheme + "://" + uri.authority + "/" + uri.path;