2015-03-19 56 views
0

下面的代碼拆分data,施加一個正則表達式,重新加入字符串(有,因爲我想要的段落是在一個單獨的塊/線路輸出,消除詞之間新的生產線的一部分):爲什麼這個p標籤被添加爲新行?

輸入:

Lorem存有悲坐阿梅德

存有悲坐阿梅德,consetetur eirmod tempor invidunt UT labore

代碼:

data = data.split('\n\n') 
for (var i = 0; i < data.length; ++i) { 
    data[i] = '<p>' + data[i].replace(/\n(?=\w+)/g, ' ') + '</p>' 
} 
data = data.join('\n\n') 

我想輸入是:

<p>Lorem ipsum dolor sit amet</p> 

<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore</p> 

但是,沒有,這是不是:

<p>Lorem ipsum dolor sit amet</p> 

<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore 
</p> 

可能是什麼原因?

+2

是沒有這個問題的:http://stackoverflow.com/questions/29124091/how-to -match-new-lines-as-one? – 2015-03-19 11:57:13

+0

@ʰᵈˑ不,我要求的是完全不同的東西。 – alexchenco 2015-03-19 11:59:39

+1

問題是什麼,HTML中的換行符應該不重要? – adeneo 2015-03-19 12:02:10

回答

1

我認爲您的原始字符串中有一個尾隨換行符,但您可以通過稍微更改來解決問題。相反,檢查是否有一個換行符後一個字字符,檢查後沒有空格字符:

var data = "Lorem ipsum dolor sit amet\n" 
     + "\n" 
     + "Ipsum dolor sit amet, consetetur\n" 
     + "eirmod tempor invidunt ut labore\n"; 

var data = data.split('\n\n'); 
for (var i = 0; i < data.length; ++i) { 
    data[i] = '<p>' + data[i].replace(/\n(?!\s)/g, '') + '</p>' 
} 
data = data.join('\n\n'); 

console.log(data); 
1

如果您的輸出在關閉</p>標記之前顯示換行符,那麼您的真實世界輸入必須在末尾包含換行符。以下代碼適用於我:

/* note that you cannot declare a multiline string in javascript 
    like you did. I'm using `Array.join()` to create the example data */ 
data = [ 
    "Lorem ipsum dolor sit amet", 
    "", 
    "Ipsum dolor sit amet, consetetur", 
    "eirmod tempor invidunt ut labore" 
].join("\n"); 

data = data.split('\n\n') 
for (var i = 0; i < data.length; ++i) { 
    data[i] = '<p>' + data[i].replace(/\n(?=\w+)/g, ' ') + '</p>' 
} 
data = data.join('\n\n')