2017-07-06 58 views
0

我有一個谷歌文檔具有文檔中的以下內容:從文件的身體得到文本字符串,並保留換行符

Hello 
Replace me 
Line 2 

我試圖取代「代替我」,包括換行符,以「我所取代\ n使用2線」,使最終文件的內容等於:

Hello 
I am replaced 
with 2 linesLine 2 

我的我的代碼。只不過:

function myFunction() { 
    var searchString = 'Replace me\n'; 
    var newString = 'I am replaced\nwith 2 lines'; 
    var stringData = DocumentApp.getActiveDocument().getBody(); 
    stringData.replaceText(searchString, newString); 
} 

我試圖改變搜索字符串使用\\n\v<br><br/>,也許一些其他物品。

我需要什麼searchString來包含還包括換行符?

這裏是sample file with script

回答

0
function myFunction() { 
    var searchStringNoLineBreak = 'Replace me'; 
    var searchStringRegex = "Replace me\\v"; 
    var substring = "I am replaced\nwith 2 lines"; 

    var body = DocumentApp.getActiveDocument().getBody(); 

    // get all paragraphs 
    var paragraphs = body.getParagraphs(); 

    // loop paragraphs 
    for (var i = 0; i < paragraphs.length; i++) 
    { 
    // current paragraph 
    var p = paragraphs[i]; 

    // if found text with soft return, replace it 
    if (p.findText(searchStringRegex)) 
    { 
     p.replaceText(searchStringRegex, substring); 
    } 

    var isAtTheEnd = p.findText(searchStringNoLineBreak); 

    // if text without newline was found but at the end of paragraph, we need to replace it too 
    if (isAtTheEnd) 
    { 
     // replace text without new line character 
     p.replaceText(searchStringNoLineBreak, substring); 

     // then merge next paragraph with current to remove that new line between them 
     if (i+1 < paragraphs.length) 
     { 
     var nextP = paragraphs[i+1]; 
     nextP.merge(); 
     } 
    } 
    } 
} 

輸入:

enter image description here

結果:

enter image description here

+0

這並不把 「2號線」 後方「,2行「只有當我沒有嘗試搜索時纔有效h爲換行符。在這種情況下,我也可以使用單引號。問題是搜索包含換行符的字符串。 –

+0

我添加了代碼來搜索帶換行符的字符串。 – Kos

+0

我會試試這個。在我的最終產品中,我需要測試換行符和分支。最終,我將在'#['和']#'之間尋找任何文本,並用其他值替換其中的一部分,同時保留這些「標記」之間的換行符。因此,在我仍然簡化的示例文本中,首先查看文檔中的「#[替換我\ n]#」,在首先查看文本中是否存在換行符後,將其替換爲「我被替換爲\ 2行」 。我知道調試器沒有在讀取的文本中顯示「\ n」。我只是希望使用replaceText()更簡化的方法。 –

相關問題