我必须从几个word文档(很多文档)中获取内容(一些练习的文本)并对其进行转换,以便可以在Javascript应用程序中加载它们。
这些word文档的内容示例如下:
1.文字问题1
回答1
回答2
回答3
2.Text 问题 2,其中一个_ _ _ _ _ _ _或更多。
回答1
回答2
回答3
等
因此,问题有一行,一行为空白,然后是3行,并附有可能的答案。在示例中,我提出了2个问题,但每个单词文档可以有12个以上。请注意,在问题文字中的文字可以加下划线或加粗。也可能有空格(由几个_字符表示,中间有或没有空格)。
这些word文档的输出格式如下:
var questions = [
{
label : "1.Text question 1",
options : ["answer 1", "answer 2", "answer 3"],
answer : [1] //Here I will need to set the right answer, probably manually
},
{
label : "1.Text <strong>question</strong> 2",
options : ["answer 1", "answer 2", "answer 3"],
answer : [0] //Here I will need to set the right answer, probably manually
},
etc
];
所以它是JS中的基本关联数组。请注意,“标签”键将以html格式保存问题的文本(因此在示例中有一个<strong>
标记,以反映第二个问题中的粗体字。)
我正在寻找的是一个脚本,它接受一个word文档作为输入,如示例和 输出一个JS文件也像我的输出示例(如果它是一个工作的文本文件)。如果它是PHP或Javascript,脚本语言将是最好的。如果我必须对单词文档做一些工作以适应某些东西以使脚本更容易,那就没关系。
对我来说,主要的挑战是如何保留文本可以拥有的所有文本样式(粗体,下划线,空格......),否则将它们转换为我认为可以工作的简单txt文件... < / p>
对此有任何帮助将不胜感激!
答案 0 :(得分:0)
假设所描述的新行,按新行划分并根据空行进行选择,例如
function parse(str) {
var a = str.split('\n'), // split input and var everything
flag = 0, question = -1, qLine = 0, i,
questions = [];
for (i = 0; i < a.length; ++i) { // loop over lines
if (!a[i]) { // if blank line,
flag = 1 - flag; // flip choice
qLine = 0; // reset multi-line counter
}
else if (flag === 0) { // if question line
if (qLine === 0) { // if new question
questions.push({ // add to questions
label: a[i],
options: [],
answer: []
});
++question; // and increase question count
} else { // else multi-line question
questions[question].label += '\n' + a[i]; // add to label
}
++qLine; // either way increase multi-line counter
}
else if (flag === 1) { // if answer line
questions[question].options.push(a[i]); // add answer
}
}
return questions;
}
然后
parse('1.Text question 1\n\
\n\
answer 1\n\
answer 2\n\
answer 3\n\
\n\
2.Text question 2 with one _ _ _ _ _ _ _ or more.\n\
\n\
answer 1\n\
answer 2\n\
answer 3\n\
');
/*
[
{
"label": "1.Text question 1",
"options": [
"answer 1",
"answer 2",
"answer 3"
],
"answer": []
},
{
"label": "2.Text question 2 with one _ _ _ _ _ _ _ or more.",
"options": [
"answer 1",
"answer 2",
"answer 3"
],
"answer": []
}
]
*/