2014-02-13 52 views
-1

我需要處理粘貼的串在JavaScript這樣的:分割字符串作進一步處理

Introduction 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 

Something Else 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 

Another Part: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 

Finish 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 

這應該得到的東西是這樣的:

<div><h1>Introduction</h1> 
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> 
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p></div> 

<div><h1>Something Else</h1> 
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p></div> 

<div><h1>Another Part</h1> 
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p> 

<div><h1>Finish</h1> 
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p></div> 

說明

有文本塊「介紹」,「Somethin g else「,」Another part「和」Finish「(這些詞是」搜索字符串「) 我需要找到這些塊以用div元素包裝它們。 div元素以下一個文本塊結尾(或字符串結尾) 對我來說,一個問題是「搜索字符串」可能以「:」結束,或者沒有它們......因此,「: 「或」Linebreak「在標題中應該被刪除。 可能是這種情況,一個塊丟失。即只有「簡介」和「完成」。所以這將導致兩個div塊。

var text; 
var parts = text; 
replace(/^[\n\s]*|[\n\s]*$/g, ''); 
split(/\n\s*\n/g); 

但是,如何獲取標題?像...

如果「簡介」 - >裹介紹與H1

我如何獲得P標籤?

+0

控制假如上一行是空的? – SamDroid

+0

'Adobe Dreamweaver'確實如此,我相信。 –

+1

@RahulDesai它可以完成5行的JS,不需要使用軟件... –

回答

4

你可以這樣做:

html = text.trim().replace(/(.*?)(\n|:)(.*?)(\n\n|$)/mg, "<h1>$1</h1><p>$3</p>"); 

Demonstration


我看你加入jQuery的標籤。所以,你可以定義一個類,你要處理的元素,然後做

$('.raw').html(function(_,h){ 
    return h.trim().replace(/(.*?)(\n|:)(.*?)(\n\n|$)/mg, "<h1>$1</h1><p>$3</p>") 
}); 

Demonstration

+0

非常感謝。是否可以設置一個數組(或類似的東西)來定義只有被處理的塊?即只有「介紹」和「完成」應該會受到影響.. – user3142695

+0

@ user3142695你的意思是像[this](http://jsbin.com/retux/4/edit)? –

+0

哇。是。但我錯過了未處理塊的一些p標籤。在上面的例子「別的東西」和「另一部分」應該是一個P塊... – user3142695