在AS3中搜索并替换多个单词

时间:2015-12-04 03:37:32

标签: string actionscript-3 text replace

我在AS3中获得了此代码:

on()

是否可以告诉代码搜索"星期一,星期二或星期日,或星期四,或星期五"并用" _"替换它们?

其次,是否可以告诉代码搜索" 1月"并将其替换为" 01","二月和#34; by" 02" ...等? (如果可能的话,在一行中)?

THX

修改

我想做一些简单的事情:

var str:String = mySharedObject.data.theDate;
var search:String = "monday";
var replace:String = "";

function strReplace(str:String, search:String, replace:String):String {
 return str.split(search).join(replace);
}

str.replace( "monday"||"tuesday"||"wednsday" , "" );

但它不起作用..

1 个答案:

答案 0 :(得分:0)

你想要的是一个正则表达式,它在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/