2011-04-09 50 views
0

快速陣列的問題...所以我有此數組:拆分陣列與一個人的ActionScript

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

知道了!沒關係感謝!更新下面的代碼: – worked 2011-04-09 16:17:04

回答

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

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

乾杯, Rob