String 在字符串as3中查找前3个单词

String 在字符串as3中查找前3个单词,string,actionscript-3,substring,String,Actionscript 3,Substring,我想执行如下的私有消息函数: var a = "/pm John Hello John! this is a private message"; if(a.indexOf("/pm") >= 0){ //It contains the String! trace("Contains /pm"); sendPM(toWho, Msg); } else{ send

我想执行如下的私有消息函数:

    var a = "/pm John Hello John! this is a private message";

    if(a.indexOf("/pm") >= 0){
        //It contains the String!
            trace("Contains /pm");
            sendPM(toWho, Msg);
        }
        else{
         sendPublicMsg();
}
检测/pm是否在字符串中

调用函数

用第二个词John 还使用字符串的第三部分Hello John!这是一条私人信息。 多种方法之一:

var a = "/pm John Hello John! this is a private message";
var splitted:Array = a.split(" "); 

if(splitted[0] == "/pm"){ 
    sendPM(splitted[1], a.replace(splitted[0] + " " +splitted[1],""));
}

与indexOf相比,这里的优点是,如果需要f.ex,现在可以在实际消息中使用/pm。教John如何使用此功能。

解决此问题的另一种方法是使用正则表达式:

var a:String = "/pm John Hello John! this is a private message";
var privateMessagePattern:RegExp = /(\/pm) (\w+) (.*)/;
if(a.search(privateMessagePattern) == 0) {
    var aMessage:Array = a.match(privateMessagePattern);
    var recipient:String = aMessage[2];
    var message:String = aMessage[3];
    sendPM(recipient, message);
} else {
    sendPublicMsg();
}

上述代码中的aMessage数组将包含4个元素:第一个元素是原始字符串,第二个元素是privateMessagePattern RegExp定义的3个组。如果RegExp与数组不匹配,则数组将为null,搜索方法返回的索引也将为-1。

多种方法之一,但不是最有效的方法:var splitted:Array=a.split;如果splitted[0]==/pm{sendpmslitted[1],a.replacepsplitted[0]++splitted[1],;}@kaarto请添加您的上述评论作为答案,因为它是正确的。