AS3 - чтение всех значений из файла свойств, которые соответствуют определенной комбинации клавиш - PullRequest
0 голосов
/ 12 марта 2012

У меня есть файл свойств с двумя различными шаблонами пары ключ-значение, как показано ниже:

  1. name.name.name.key = value
  2. name.name.fullname.key = значение

Доступ к ним один за другим возможен, если ключ известен.Теперь мне нужно получить доступ ко ВСЕМ значениям, скажем, name.name.name, не зная ключей (точнее целых).Затем значения должны быть добавлены в ArrayList для отображения в списке.

Ключи являются абсолютно случайными, поэтому я заранее не знаю диапазон (я не могу и не хочу жестко кодироватьдиапазон диапазона ключей для каждого отдельного файла свойств), поэтому простое циклическое переключение по ранее определенному диапазону здесь не то, что мне нужно.Кроме того, ключи не являются последовательными.

Как я могу сделать это с AS3?

Просто для пояснения, поскольку это кажется немного запутанным;Я не хочу разбирать файл свойств.Я скорее хочу решить эту проблему, используя методы AS и Flex, которые уже предусмотрены.Класс ResourceBundle уже имеет метод, который выводит содержимое указанного пакета.Тем не менее, он содержит все значения.Что мне нужно, так это просто подмножество значений, которые соответствуют заданному шаблону ключа.

Редактировать: Чтобы упростить это, я могу отказаться от сопоставления шаблона ключа и создать новый файл ресурсов с отдельным шаблоном.Теперь мне нужно только получить все пары ключ-значение (мне нужны как целые числа из ключей, так и значение) из этого ресурса.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Вот простой пример разбора строки:

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);
        }
    }
}
0 голосов
/ 13 марта 2012

адаптированный метод форматирования строки, предоставляемый пакетом;

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