您想要的是在 AS3 的 RegExp 类中实现的正则表达式。传递给String.replace() 的模式可以是RegExp,可用于进行您想要的匹配类型。
匹配英语工作日的简单正则表达式可能如下所示:
(Monday|Tuesday|Wednesday|Thursday|Friday)
这是“匹配星期一或星期二或星期三或星期四或星期五”的正则表达式。请注意,这几乎肯定不是最好的正则表达式,但它很简单并且有效。有一个链接,您可以在此答案的底部了解有关正则表达式的更多信息。
这个正则表达式可以放入一个函数中,该函数接受要搜索的字符串、替换匹配项的字符串和一个名为flag 的字符串。 flag 是修改正则表达式工作方式的选项列表。 docs for the RegExp construction 提供完整的详细信息。这个函数可能看起来像:
private function replaceDay(str:String, replace:String, flag:String = ''):String
{
var search:RegExp = new RegExp("(Monday|Tuesday|Wednesday|Thursday|Friday)", flag);
return str.replace(search, replace);
}
然后您可以对其进行测试(我已经在 Flash Builder 中成功运行了它):
// Replace a single, normally capitalized day name
var monday:String = "Monday the 1st";
trace(replaceDay(monday, "REDACTED")); // REDACTED the 1st
// Replace multiple normally capitalized day names
var mondayAndTuesday:String = "Either Monday or Tuesday works for me";
trace(replaceDay(mondayAndTuesday, "", "g")); // Either or works for me
// Replace a single day name regardless of capitalization
var lowerCaseWednesday:String = "wednesday";
trace(replaceDay(lowerCaseWednesday, "yadsendew", "i")); // yadsendew
var weirdCaseThursday:String = "tHurSdaY";
trace(replaceDay(weirdCaseThursday, "It's actually 'Thursday'.", "i")); // It's actually 'Thursday'.
// Replace multiple day names regardless of capitalization
var friday:String = "FriDAY FRIDAY friday";
trace(replaceDay(friday, "Something", "ig")); // Something Something Something
关于您关于用数字替换月份名称的问题也是可能的。 docs for String.replace() 中的最后一个示例显示了如何将函数用作 replace 值。由于 StackOverflow 更喜欢 one post, one question,您应该将其从该帖子中删除并发布另一个问题。
有关正则表达式的更多信息,请查看http://www.regular-expressions.info/