【问题标题】:search and replace multiple words in AS3在 AS3 中搜索和替换多个单词
【发布时间】:2016-03-08 22:09:54
【问题描述】:

我的 AS3 中有这段代码:

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);
}

是否可以告诉代码搜索“星期一或星期二或星期三,或星期四,或星期五”并将它们替换为“_”?

其次,是否可以告诉代码搜索“January”并将其替换为“01”,将“February”替换为“02”......等等? (如果可能的话就一行)?

谢谢


编辑

我想做这么简单的事情:

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

或者

var search:String ="tuesday","wednsday","thursday";

但它不起作用..

【问题讨论】:

    标签: string actionscript-3 text replace


    【解决方案1】:

    您想要的是在 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/

    【讨论】:

    • 非常完整的答案!
    • 如果你有一个和这个问题一样好的答案:stackoverflow.com/questions/34078950/… 那就完美了! ;-)
    • 阅读 String.replace 的文档,用数字替换月份名称。不太明白...
    • 您需要针对月份部分提出另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2011-09-13
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多