使用动作脚本解析字符串

时间:2009-12-22 21:37:25

标签: actionscript-3

我正在开发一个弹性网站,

我想解析下面的字符串: 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

5 个答案:

答案 0 :(得分: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();

//找回新的网址

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

答案 1 :(得分: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();

或者,如果您知道要从方案,权限和路径构建您的URL(即,您不需要保留端口,用户名,密码等),您可以从部分构建URL。 / p>

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

答案 2 :(得分:1)

如果你不确定sessionid会不会是最后一次,你可能会分开&使用as3 string.split functionhttp://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html#split%28%29

然后使用for循环重建字符串,使用string.indexOf函数http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html#indexOf%28%29省略以session_id开头的字符串,以查看“session_id”是否在索引0

答案 3 :(得分:0)

您可以在Flex中使用正则表达式...这里是example

答案 4 :(得分:0)

假设会话ID始终是查询字符串中的最后一个变量:

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