在使用带有RegEx的String.replace()时,AS3是否支持函数?

时间:2014-12-20 05:18:38

标签: actionscript-3 actionscript

您可以在ActionScript中放置替换文本的功能吗?

例如,您可以这样做:

string = string.replace(/\b\w+\b/g, "word");

这样做:

string = string.replace(/\b\w+\b/g, function(m){ 
   return /^[A-Z]/.test(m) ? "Word" : "word" 
});

我收到了这个错误:

ArgumentError: Error #1063: Argument count mismatch on Function/<anonymous>(). Expected 1, got 3.
    at String$/_replace()

1 个答案:

答案 0 :(得分:0)

我找到了更多信息here

所以虽然这适用于JavaScript:

string = string.replace(/\b\w+\b/g, function(m){ 
   return /^[A-Z]/.test(m) ? "Word" : "word" 
});

我们必须删除参数并使用所有函数可用的arguments对象,如:

string = string.replace(/\b\w+\b/g, function():String {
   var match:String = arguments[0];
   //var matchIndex:int = arguments[arguments.length-2];
   //var updatedString:String = arguments[arguments.length-1];

   return /^[A-Z]/.test(match) ? "Word" : "word" 
});

以下是有关这些参数的更多说明:

当您指定函数作为repl时,replace()方法将传递 函数的以下参数:

  • 字符串的匹配部分。
  • 任何捕获的括号组匹配都将作为下一个参数提供。以这种方式传递的参数数量会有所不同 取决于括号匹配的数量。你可以确定 通过检查arguments.length - 3来获得括号匹配的数量 在功能代码中。
  • 匹配开始的字符串中的索引位置。
  • 完整的字符串。