首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析word文档的脚本

解析word文档的脚本
EN

Stack Overflow用户
提问于 2013-07-08 23:10:04
回答 1查看 2K关注 0票数 1

我必须从几个word文档(很多)中获取内容(一些练习的文本),并对它们进行转换,以便将它们加载到Javascript应用程序中。

这些word文档内容的一个例子是:

1.案文问题1

答案1

答案2

答案3

2.文本问题2,具有一个或多个___。

答案1

答案2

答案3

问题有一行,空白行,然后有3行可能的答案。在这个例子中,我提出了两个问题,但是每个word文档都可以有12+。请注意,问题中的文字可以加下划线或粗体。也可以有空格(由几个_字符表示,中间有或没有空格)。

这些word文档的输出格式如下:

代码语言:javascript
复制
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,那么脚本语言将是最好的。如果我必须在word文档上做一些工作来修改一些使脚本更容易的内容,这是可以的。

这方面的主要挑战是如何保持所有文本样式(粗体、下划线、空格.)。如果不把它们转换成简单的txt文件,我想会有效的.

如有任何帮助,我们将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2013-07-08 23:26:52

假设新行如所述,在新行处拆分,并根据空行进行选择。

代码语言:javascript
复制
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;
}

然后

代码语言:javascript
复制
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": []
    }
]
*/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17537466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档