【问题标题】:As3: Working with stringsAs3:使用字符串
【发布时间】:2014-07-10 15:22:45
【问题描述】:

我不希望您为我完成所有工作,但我需要一些信息,因为我对此并不十分熟悉。

我已从 URL 加载文件并将其数据保存到字符串中:

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

该文件包含某些数据。假设它看起来像这样:

"

         Width: 10 Height: 15 Other: 4

"

现在我希望代码将所有数据放入一个字符串中。像 var object.W = 文件中的“宽度” var object.H = 文件中的“高度”

有人可以帮我吗?我尝试查看 adobe.help,但我不太了解。

【问题讨论】:

  • 为什么不使用标准化格式,例如 XML 或 JSON? Actionscript 对这两种标准都有很好的解析器,它会为您节省大量的精力

标签: string actionscript-3 file variables text


【解决方案1】:

最好使用 JSON 或 XML,但如果您要这样做,那么请利用字符串解析功能。例如字符串可以很容易地拆分。鉴于此:

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]);  

就是这样。

【讨论】:

  • 复杂。 RegEx 是一个更好的解决方案。 -1
【解决方案2】:

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

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

这就是您所要做的,您可以通过obj.width 访问它。如果您必须使用您发布的格式,您需要使用带有一些正则表达式的String#split

这是未经测试的,但我相信这应该适合你。

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 是正确的。希望这至少可以帮助您指明正确的方向

【讨论】:

  • 好的,谢谢大家!我没有意识到使用 XML 是如此简单。我会坚持下去。
猜你喜欢
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2013-01-25
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多