AS3 - 从属性文件中读取与特定键模式匹配的所有值

时间:2012-03-12 13:53:21

标签: actionscript-3 flex properties flex4

我有一个属性文件,其中包含两个不同的键值对模式,如下所示;

  1. name.name.name.key = value
  2. name.name.fullname.key = value
  3. 如果密钥已知,则逐个访问它们很好。 但是,我现在需要的是从name.name.name访问所有值而不知道键(整数是准确的)。然后必须将值添加到ArrayList中以显示在List中。

    键是完全随机的,所以我事先不知道范围(我不能也不想为每个单个属性文件硬编码键范围),所以只需循环一个先前定义的范围不是我需要的。此外,密钥不是连续的。

    如何使用AS3执行此操作?

    只是为了澄清,因为这似乎有点令人困惑; 我不想解析属性文件。我宁愿使用AS和Flex已经提供的方法来解决这个问题。 ResourceBundle类已经有一个输出指定包的内容的方法。但是,它包含所有值。我需要的只是与给定键模式匹配的值的子集。

    编辑: 为了使这更容易,我可以删除键模式匹配并创建具有不同模式的新资源文件。现在我只需要从该资源获取所有键值对(我需要来自键和值的整数)。

2 个答案:

答案 0 :(得分:2)

这是一个使用字符串解析的简单示例:

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;

var l:URLLoader = new URLLoader(new URLRequest("inp.txt"));
l.addEventListener(Event.COMPLETE, onComplete);


function onComplete(e:Event):void
{
    var data:String = e.target.data;
        //remove whitespace
    data = data.replace(' ','');
        //split data string by lines
    var pairs:Array = data.split("\r\n");
        //our name search pattern
    var pattern:RegExp = /name\.name\.name/;
        //array to store extracted values
    var values:Array = [];
    for each (var s:String in pairs) {
        if (pattern.test(s)) {
            //we've got a match, let's extract value
            var value:String = s.split("=")[1];
            values.push(value);
        }
    }
}

答案 1 :(得分:0)

包提供的改编的String格式化方法;

function onComplete(e:Event):void
{           
    var data:String = e.target.data;
    var pairs:Array = data.split("\r\n");

    var values:Array = [];
    for each (var s:String in pairs) {    
        var value:String = s.split("=")[1];
        values.push(value);

    }
    trace(values);

}

不确定原因,但是跟踪给出了第一对的值加上第二对的值。 不知道为什么。

我实际上是关于在字典中添加键和值,围绕这一行;

_dict[arr[0].substr(0, arr[0].length)] = arr[1];