Разделить массив с помощью ActionScript - PullRequest
0 голосов
/ 09 апреля 2011

Вопрос по быстрому массиву для кого-то ... Итак, у меня есть этот массив:

var bodyText:Array = ["1||^^1a::##1b||1", "2||^^2a::##2b||2"]; 

И мне нужно разобрать и отформатировать его так:

Вопрос: 1
ИсправитьОтвет: 1a
Неверный ответ: 1b
Обратная связь: 1

Вопрос: 2
Правильный ответ: 2a
Неверный ответ: 2b
Обратная связь: 2

Я довольно близок к решению, но по какой-то причине у меня возникают проблемы с правильными / неправильными ключами, например, вот что отслеживает мой код:

Question: 1
Correct Answer: 1a
^^1a
##1b
Incorrect Answer: 1b
Feedback: 1

Question: 2
Correct Answer: 2a
^^2a
##2b
Incorrect Answer: 2b
Feedback: 2

Здесьмой сценарий, любая помощь с благодарностью!Спасибо!

var bodyText:Array = ["1||^^1a::##1b||1", "2||^^2a::##2b||2"];
var _txt:String;
for (var i:Number = 0; i < bodyText.length; i++) {
    var _tb:Array = bodyText[i].split("||");
    for (var j:Number = 0; j < _tb.length; j++) {
        //question
        _txt = "Question: " + _tb[0] + "\n";

        //answers
        var _kb:Array = _tb[1].split("::");
        for (var k:Number = 0; k < _kb.length; k++) {
            _txt += _kb[k].split("^^").join("Correct Answer: ") + "\n";
            _txt += _kb[k].split("##").join("Incorrect Answer: ") + "\n";
        }

        //feedback
        _txt += "Feedback: " + _tb[2] + "\n";
    }
    trace(_txt);
}

Ответы [ 3 ]

0 голосов
/ 09 апреля 2011
_txt += _kb[0].split("^^").join("Correct Answer: ") + "\n";
_txt += _kb[1].split("##").join("Incorrect Answer: ") + "\n";

Если на каждый вопрос есть только один правильный ответ и один неправильный ответ, то вышеуказанного должно быть достаточно.

Причина, по которой вы получаете ^^1a, заключается в том, как вы разделяете

for (var k:Number = 0; k < _kb.length; k++) {
            _txt += _kb[k].split("^^").join("Correct Answer: ") + "\n";
            _txt += _kb[k].split("##").join("Incorrect Answer: ") + "\n";
        }

Эта строка

_kb[k].split("^^").join("Correct Answer: ") + "\n";

заменяет ^^ для КБ [0] но вторая строка

_txt += _kb[k].split("##").join("Incorrect Answer: ") + "\n";

не находит ## и возвращает ^^1a

на следующей итерации все будет наоборот, k теперь равно 1: ##1b

0 голосов
/ 09 апреля 2011

Ваш второй цикл for не нужен, см. Код ниже (пробовал, работал):

var bodyText:Array = ["1||^^1a::##1b||1", "2||^^2a::##2b||2"];
            var _txt:String;
            for (var i:Number = 0; i < bodyText.length; i++) {
                var _tb:Array = bodyText[i].split("||");
                for (var j:Number = 0; j < _tb.length; j++) {
                    //question
                    _txt = "Question: " + _tb[0] + "\n";

                    //answers
                    var _kb:Array = _tb[1].split("::");
                    _txt += _kb[0].split("^^").join("Correct Answer: ") + "\n";
                    _txt += _kb[1].split("##").join("Incorrect Answer: ") + "\n";

                    //feedback
                    _txt += "Feedback: " + _tb[2] + "\n";
                }
                trace(_txt);
            }

Ура, Rob

0 голосов
/ 09 апреля 2011

Я понял ...

var bodyText:Array = ["1||^^1a::##1b||1", "2||^^2a::##2b::##2c||2"];
var _txt:String;
for (var i:Number = 0; i < bodyText.length; i++) {
    var _tb:Array = bodyText[i].split("||");
    for (var j:Number = 0; j < _tb.length; j++) {
        //Question:
        _txt = "Question: " + _tb[0] + "\n";

        //Answers:
        var _kb:Array = _tb[1].split("::");
        for (var k:Number = 0; k < _kb.length; k++) {
            if (_kb[k].indexOf("^^") != -1) {
                _txt += _kb[k].split("^^").join("Correct Answer: ") + "\n";
            } else {
                _txt += _kb[k].split("##").join("Incorrect Answer: ") + "\n";
            }
        }
        //Feedback:
        _txt += "Feedback: " + _tb[2] + "\n";
    }
    trace(_txt);
}
...