开发者

Split Array with ActionScript

开发者 https://www.devze.com 2023-02-23 00:39 出处:网络
Quick Array question for someone...So I have this array: var bodyText:Array = [\"1||^^1a::##1b||1\", \"2||^^2a::##2b||2\"];

Quick Array question for someone... So I have this array:

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

And I need to parse and format it like so:

Question: 1

Correct Answer: 1a

Incorrect Answer: 1b

Feedback: 1

Question: 2

Correct Answer: 2a

Incorrect Answer: 2b

Feedback: 2

I'm pretty close to a solution but for whatever reason I'm having issues with the correct/incorrect keys, for instance, this what my code traces:

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

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

Here is my script, any help is greatly appreciated! Thanks!

var bodyText:Array = ["1||^^1a::##1b||1", "2||^^2a::##2b||2"];
var _txt:String;
for (v开发者_开发问答ar 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);
}


I got it...

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


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

If each question has only one correct answer and one incorrect answer the above should suffice.

The reason you are getting the ^^1a is because of how you are splitting

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

This line

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

replaces the ^^ for kb[0] but the second line

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

does not find ## and returns ^^1a

on the next iteration it will be the reverse, k is now 1 : ##1b


Your second for loop is unnecessary, see the code below (tried it, worked):

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

Cheers, Rob

0

精彩评论

暂无评论...
验证码 换一张
取 消