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: 1Question: 2
Correct Answer: 2a Incorrect Answer: 2b Feedback: 2I'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
精彩评论