AS3如何从页面源的中间获取子字符串?

时间:2015-06-10 21:42:56

标签: string actionscript-3

我希望我的应用程序能够读取在线保存的设置(例如,在这种情况下,deviantart sta.sh - http://sta.sh/024wsd5s7k0z)。显然,我使用的是源代码,问题是找到[startSettingsBlock][endSettingsBlock]之间包含的子字符串。 (<br />是为了确保我选择正确的文本。)

我感兴趣的部分,第207行:

[number]=42<br />[character]=k<br />[amount]=6<br />[gay]=false<br />[ponies]=cool<br />[whazz]=idiot<br />[thisapp]=is gonna be awesome<br />[rainbow dash]=best pony<br />[lol]=sucks<br />[alice]=hasacat<br />[preferences]=3;6;8<br />[variable]=alice has a cat<br />[slowly]=getting there<br />[poop]=face

到目前为止我的代码:

//bunch of imports here

valueButton.addEventListener(MouseEvent.CLICK, requestValue);

var pageLoader:URLLoader = new URLLoader();
var pageRequest:URLRequest = new URLRequest();
    pageRequest.url = "http://sta.sh/024wsd5s7k0z";
    pageRequest.method = URLRequestMethod.GET;
var pageContext:LoaderContext = new LoaderContext();
    pageContext.checkPolicyFile = true;
    pageLoader.addEventListener(Event.COMPLETE, readParams);
    pageLoader.load(pageRequest);
var opening:String = "[startSettingsBlock]<br />";
var closing:String = "<br />[endSettingsBlock]";
var rawSettings:String;

function requestValue(e:Event){
    var toFind:String = "["+inputTextField.text+"]=";
    var variableStartIndex:int = rawSettings.indexOf(toFind)+toFind.length;
    var variableEndIndex:int = variableStartIndex;
    //once I have raw settings (in any form), I do magics.
    valueTextField.text = rawSettings.substring(variableStartIndex, variableEndIndex);  
}

function readParams(e:Event){
     rawSettings = pageLoader.data.substring(
                        pageLoader.data.indexOf(opening)+opening.length, 
                        pageLoader.data.indexOf(closing));
}

运行readParams后,rawSettings等于

<!DOCTYPE html> <!--[if I

这是源代码的开头。

1 个答案:

答案 0 :(得分:0)

我还没有尝试过您的代码,但看起来它对我来说很好,有什么问题?

无论如何,我的建议是使用不同的东西在线存储您的设置,网络服务器允许您保存数据而不需要页面的所有html,或者在最糟糕的情况下您无法访问服务器可以使用GitHub gist https://gist.github.com/因为你可以访问一个要点,例如:

https://gist.github.com/fhferreira/cc8fcefce8421dd2d6c4

原始格式:

https://gist.githubusercontent.com/fhferreira/cc8fcefce8421dd2d6c4/raw/85bcfa8f5ccc2dd074ff37536db540d5e993ae57/array-sum.js

你的要点中有一个原始按钮。这样分析起来更简单。

最后一个建议是使用标准格式(我认为JSON是最受欢迎的),您可以使用现有的库来解析它。对于json,所有必需的代码都已存在于标准库http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html