2016-09-05 15 views
0

RegExpオブジェクトを使用して結果を得ることができるかどうかわかりません。 correctAnswer変数の一部と一致する答えをテストしたいと思います(大文字と小文字は区別されません) correctAnswer変数に含まれていない他の世界は除外されます。Flash AS3 RegExp

パターンに含まれていない単語を避けるためにRegExpを使用できますか?

var correctAnswer:String = "Hello Dummy World"; 
var answer1:String = "hello world"; //should be a good answer 
var answer2:String = "Hello dummy world"; //should be a good answer 
var answer3:String = "Hello WRONG world"; //should be a wrong answer 
var answer4:String = "Another String here"; //should be a wrong answer 
function checkAnswer(a:String):String{ 
    var exp1:RegExp=/Hello|Dummy|World/ig; 
    var r= a.replace(exp1,"OK"); 
    trace(a.search(exp1)); 
    return r 
} 
trace(checkAnswer(answer1)); // this should return "Hello Dummy World" 
trace(checkAnswer(answer2)); // this should return "Hello Dummy World" 
trace(checkAnswer(answer3)); // this should throw a wrong answer 
trace(checkAnswer(answer4)); // this should throw a wrong answer 

今、出力は私を与える:

0 
OK OK // in place of "Hello Dummy World" 
0 
OK OK OK // in place of "Hello Dummy World" 
0 
OK WRONG OK // in place of "bad answer" 
-1 
Another String here // in place of "bad answer" 

私の英語については申し訳ありません、あなたは私にいくつかのアドバイス/提案または可能な答えを与えることができればお願いします。

この場合、RegExpオブジェクトを使用しないでください。 私はこのことに慣れていませんが、これがうまくいく場合は、すべての可能なケースをテストするための条件付きループよりも優れていますか?

私はここで少し混乱しており、質問がはっきりと記述されることを願っています。

ありがとうございます。

答えて

2

次のコードは、正解内のすべての「単語」を抽出し、指定された文字列内にあるを削除します。したがって、トリミング後に何も残っていません。

var correctAnswer:String = "Hello Dummy World"; 

var answer1:String = "hello world"; // Should be a good answer 
var answer2:String = "Hello dummy world"; // Should be a good answer 
var answer3:String = "Hello WRONG world"; // Should be a wrong answer 
var answer4:String = "Another String here"; // Should be a wrong answer 

var tokenized:Array = correctAnswer.split(" "); 
function checkAnswer(a:String):Boolean{ 
    var exp:RegExp = new RegExp(tokenized.join("|"), "ig"); 
    var correctKeywordsRemoved:String = a.replace(exp, ""); 
    var isCorrect:Boolean = trim(correctKeywordsRemoved).length == 0; 
    trace("Your answer of '"+a+"' is "+(isCorrect ? "CORRECT :)" : "WRONG :(")); 
    return isCorrect; 

    function trim(s:String):String { 
     return s.replace(/^\s*|\s*$/gim, ""); 
    } 
} 

checkAnswer(answer1); // Your answer of 'hello world' is CORRECT :) 
checkAnswer(answer2); // Your answer of 'Hello dummy world' is CORRECT :) 
checkAnswer(answer3); // Your answer of 'Hello WRONG world' is WRONG :(
checkAnswer(answer4); // Your answer of 'Another String here' is WRONG :(
+0

これは私が欲しかったものです。 それは可能でしたが、私は本当に正規表現についてのノブです! @ Soomeneを過ごしていただきありがとうございます! – tatactic