Сравнение предложений (строк) в AS3 - PullRequest
1 голос
/ 08 октября 2009

Я строю короткую викторину, где пользователю нужно ввести значение аббревиатуры. Это означает, что мне нужно сравнить длинную строку (обычно предложение), набранную пользователем, с аббревиатурой.

У меня такое чувство, что я делаю это неправильно. Для тестирования я вставляю правильный ответ, чтобы убедиться в правильности написания, однако постоянно получаю сообщение о том, что ответ неправильный.

Мой вопрос: правильно ли я сравниваю?

Вот мой код:

 var arrQuestions:Array = [["LOL","Laughing Out Loud"], ["OMG", "Oh My God"], ["BTW", "By The Way"]];
var i:Number=0;

    function setup():void {
     quiztext_txt.text = arrQuestions[i][0];
     trace(quiztext_txt.text);
     trace(arrQuestions[i][1]);
     check_btn.addEventListener(MouseEvent.CLICK, clickHandler);


    }//End of Setup()

    setup();

    function clickHandler(event:MouseEvent):void {

     var givenString:String;
     var inputString:String;
     inputString = userinput_txt.text;
     givenString = arrQuestions[i][1];
     if (inputString == givenString) {
      feedback_txt.text = "Correct!";


     } else {
      feedback_txt.text = "Wrong!";
     }
    }

Ответы [ 3 ]

0 голосов
/ 20 октября 2009

попробуйте очистить текстовое поле в функции настройки следующим образом:

   function setup():void
   {
     userinput_txt.text = "";
     quiztext_txt.text = arrQuestions[i][0];
     trace(quiztext_txt.text);
     trace(arrQuestions[i][1]);
     check_btn.addEventListener(MouseEvent.CLICK, clickHandler);


    }//End of Setup()
0 голосов
/ 24 октября 2009

Для любого вида сопоставления строк я настоятельно рекомендую изучить регулярные выражения (RegExp). В регулярном выражении, написанном ниже, я сопоставляю каждое слово, затем я говорю [ ]+, что означает «хотя бы один или несколько пробелов», затем в конце выражения я использую /gi, чтобы сказать, что выражение не чувствительно к регистру. В приведенном выше коде, если я наберу фразу в нижнем регистре, она не будет соответствовать, быстрое решение для этого будет использовать этот if(inputString.toLowerCase() == givenString.toLowerCase()), который поймает это. Вот пример регулярного выражения:

// testString could easily equal myTextField.text
var testString:String = "lauGHing      OuT       loUD";

// you could store each one in an array, as you were before
var regEx:RegExp = /laughing[ ]+out[ ]+loud/gi

trace( regEx.test( testString ) ); //returns true,test() returns a Boolean

Надеюсь, это поможет.

0 голосов
/ 08 октября 2009

Есть ли пробелы до / после ввода пользователя? Значение i изменяется между?

else 
{
  //what does it trace?
  trace("given answer: " + inputString + "\ncorrect answer: " + givenString);
  feedback_txt.text = "Wrong!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...