使用ActionScript拆分数组

时间:2011-04-09 15:27:02

标签: arrays actionscript split actionscript-2

某人的快速数组问题......所以我有这个数组:

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 :(得分:0)

我明白了......

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

答案 1 :(得分:0)

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

替换kb [0]的^^ 但第二行

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

未找到##并返回^^1a

在下一次迭代中它将是相反的,k现在是1:##1b

答案 2 :(得分:0)

你的第二个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);
            }

干杯, 罗布