2013-07-08 185 views
0

我必須從幾個word文檔(大量的文檔)中獲取內容(一些練習的文本),並對它們進行轉換,以便它們可以加載到Javascript應用程序中。解析word文檔的腳本

的這些字文件的內容的一個例子是:


1.Text問題1

答案1
答案2
答案3

2.Text 問題 2帶一個_ _ _ _ _ _ _或更多。

答案1個
答案2
答案3


因此,有這樣一個問題,一個空行一個行,然後3可能的答案線。在這個例子中,我提出了兩個問題,但每個單詞文檔可以有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>標籤可反映第二個問題中的粗體字)。

我在找的是一個腳本,接受輸入一個像文檔一樣的文檔,並且 也輸出一個JS文件,就像我的輸出示例(如果它是一個文本文件也可以)。腳本語言是最好的,如果它是PHP或Javascript。如果我必須在word文檔上做一些工作以適應某些事情以使腳本更容易,那也沒關係。

這對我來說,主要的挑戰是如何保留文本可以具有的所有文本樣式(粗體,下劃線,空格......),否則將它們轉換爲簡單的txt文件,我想會工作...

任何幫助,將不勝感激!

+0

做你嘗試任何事情了嗎? –

+0

你有沒有考慮過先把它們保存爲html。 –

回答

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": [] 
    } 
] 
*/ 
+0

感謝您的回覆。我如何在這裏「閱讀」文本的格式?如果有粗體字,下劃線字等... – Albert

+0

@Albert輸入字符串只關心新行,如果您有任何標籤,它們將按照原樣發送。 –

+0

那麼這就是我的問題......沒有「標籤」,它不是HTML,它是一個文字文檔。將所有內容轉換爲html會添加更多的標籤,使您的代碼無法工作...... – Albert