我完全不了解正则表达式。基本上我正在尝试做的是有一个错误类,我可以用来调用错误(显然),看起来像这样:
package avian.framework.errors
{
public class AvError extends Object
{
// errors
public static const LAYER_WARNING:String = "Warning: {0} is not a valid layer - the default layer _fallback_ has been used as the container for {1}.";
/**
* Constructor
* Places a warning or error into the output console to assist with misuse of the framework
* @param err The error to display
* @param params A list of Objects to use throughout the error message
*/
public function AvError(err:String, ...params)
{
trace(err);
}
}
}
我想要做的是使用像这样的LAYER_WARNING:
new AvError(AvError.LAYER_WARNING, targetLayer, this);
输出结果如下:
Warning: randomLayer is not a valid layer - the default layer _fallback_ has been used as the container for [object AvChild].
我们的想法是将{0}
替换为...params
中解析的第一个参数,{1}
替换为var pattern:RegExp = /{\d}/;
等等。
我做了一些研究,我想我已经研究出我需要使用这种模式进行搜索:
{{1}}
答案 0 :(得分:0)
您可以使用StringUtil
var original:String = "Here is my {0} and my {1}!";
var myStr:String = StringUtil.substitute(original, ['first', 'second']);
答案 1 :(得分:0)
使用g
中的RegExp
标记,您可以创建一个包含所有{x}
个匹配项的数组,然后遍历此数组并使用相应的参数替换每个匹配项。< / p>
代码:
var mystring:String = "{0} went to {1} on {2}";
function replace(str:String, ...params):String
{
var pattern:RegExp = /{\d}/g;
var ar:Array = str.match(pattern);
var i:uint = 0;
for(i; i<ar.length; i++)
{
str = str.split(ar[i]).join(params[i]);
}
return str;
}
trace(replace(mystring, "marty", "work", "friday")); // marty went to work on friday
答案 2 :(得分:0)
我假设您希望在每个字符串常量中有几个具有不同替换实例({0},{1},{2}等)的静态常量。
这样的事情应该有用 - 对不起,这是未经测试的:
public function AvError(err:String, ...params)
{
var replacementArray:Array = err.match(new RegExp("{\\d}", "g"));
for (var i:int = 0, i < replacementArray.length, i++)
err = err.replace(new RegExp(replacementArray[i], "g"), params[i]);
trace(err);
}
如果您有多个具有不同替换实例的静态常量,则需要检查传递的…params
的适当匹配量。