看起来不可能。而且有种意义,它只允许以零为基础的整数,因为你传递了可变数目的参数,你不能识别(除了在参数列表中的相对位置)。
下面是一段代码,将通过名称替换标记:
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},因为它的安全, 我认为。但是如果你想删除美元符号,请相应地更改正则表达式。
这是否是StringUtil类的扩展?由StringUtils显示? – phwd 2010-06-03 16:59:29
不是,它是我写的实用工具类的一部分。 – 2010-06-03 18:18:03