Использовать имя переменной в StringUtil.substitue в Actionscript - PullRequest
0 голосов
/ 03 июня 2010

Если у меня есть следующий код:

var value : String = StringUtil.substitute("The value {0} requested is {1}", user, value);

Как можно использовать имя переменной вместо использования {0} и {1} в коде.

Пожалуйста, совет. Спасибо.

Edit:

Приведенный выше код цитируется http://www.rialvalue.com/blog/2010/05/10/string-templating-in-flex/.
В нем говорится: «Также обратите внимание, что мы подставляем параметры, используя порядок, вместо этого было бы довольно просто сделать замену именованного параметра (то есть, используя токены, такие как $ {var1})». Поэтому я думаю, что это может быть очень легко сделать, но я не знаю, как это сделать.

1 Ответ

2 голосов
/ 03 июня 2010

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

Вот фрагмент кода, который заменит токены по имени:

    public static function replacePlaceholders(input:String,replacementMap:Object):String {
        // '${', followed by any char except '}', ended by '}'
        return input.replace(/\${([^}]*)}/g,function():String {
            return replaceEntities(arguments,replacementMap);
        });

    }

    private static function replaceEntities(regExpArgs:Array,map:Object):String {
        var entity:String       = String(regExpArgs[0]);
        var entityBody:String   = String(regExpArgs[1]);
        return (map[entityBody]) ? map[entityBody] : entity;
    }

Использование:

var test:String = "Hello there ${name}, how is the ${noun} today?";
var replacementMap:Object   = { 
    name    :   "YOUR_NAME_HERE",
    noun    :   "YOUR_NOUN_HERE"
};

trace(StringUtils.replacePlaceholders(test,replacementMap));

Формат, который я использую для заполнителей, - это $ {placeholdername}, так как он, я думаю, безопаснее. Но если вы хотите удалить знак доллара, измените регулярное выражение соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...