As3:使用字符串

时间:2014-07-10 15:22:46

标签: string actionscript-3 file variables text

我不希望你为我做所有工作,但我需要一些信息,因为我对此并不熟悉。

我已经从网址加载了文件并将其保存到字符串中:

  function LoadData(e:Event):void
   {
   var datalanes:String = (e.target.data);
   }

该文件包含某些数据。让我们说它看起来像这样:

"

         Width: 10 Height: 15 Other: 4

"

现在我希望代码将所有数据都转换为字符串。喜欢 var object.W ="宽度"从文件 var object.H =" Height"来自档案

任何人都可以帮助我吗?我试着看看adobe.help,但这对我来说并不是很了解。

2 个答案:

答案 0 :(得分:1)

最好是使用JSON或XML,但是如果你这样做,那么就利用String解析功能。例如,String可以轻松拆分。鉴于此:

width:50|||height:50|||other:4

您可以轻松获得以下所有内容:

var data:String = "width:50|||height:50|||other:4";
var parts:Array = data.split("|||");
var width:Number = Number(String(parts[0]).split(":")[1]);
var height:Number = Number(String(parts[1]).split(":")[1]);
var other:Number = Number(String(parts[2]).split(":")[1]);  

那就是它。

答案 1 :(得分:1)

我同意CyanAngel。使用标准格式。在AS3中,JSON非常容易解析。

var json:String = '{"width":10,"height":15,"other":4}';
var obj:Object = JSON.parse(json); 

这就是你所要做的一切,你可以通过obj.width访问它。如果必须使用您发布的格式,则您需要将String#split与某些RegEx一起使用。

这是未经测试的,但我相信这应该可以帮到你。

var s:String = 'Width: 10 Height: 15 Other: 4';
var a:Array = s.split(/(?<=\d)\s*(?=[a-zA-Z])/gm);

然后你可以更进一步解析数据:

var obj:Object = {};
for (var i:int = 0; i < a.length; i++) {
    var key:String = a[i].match(/^\W*/)[0]; // this is an error prone way to do this. Should always check if index 0 exists
    var value:String = a[i].match(/(?<=:\s)\d*$/)[0];
    obj[key] = value;
}

再次,未经测试。虽然我确实确保RegEx是正确的。希望至少可以帮助您指明正确的方向