2014-11-25 39 views
-2

我試圖格式化一些HTML以發送給Javascript對象中的客戶端,因此它需要刪除所有換行符。空白被刪除罰款,但他們仍然即使下面幾行後換行:即我的HTML代碼這正好將HTML格式設置爲適合JSON數據C#

string html = ""; 
html = Razor.Parse(template, viewdata); 
html = Regex.Replace(html, @"\n\s+(?=<)", ""); 

<h1>My Html</h1> 
<div> 
    <p>bla bla bla</p> 
    <table> 
    <!-- table content --> 
    </table> 
</div> 

這樣:

<h1>My Html</h1> 
<div> 
<p>bla bla bla</p> 
<table> 
<!-- table content --> 
</table> 
</div> 

但我需要這個:

<h1>My Html</h1><div><p>bla bla bla</p><table><!-- table content --></table></div> 

\ n如何匹配並且不被刪除?

在此先感謝!

+1

這與JSON有什麼關係? – 2014-11-25 04:19:23

+0

根據標籤(特別是內嵌標籤),您不能只刪除所有新行,因爲它可能會刪除輸出中的一些空間。 – nhahtdh 2014-11-25 04:38:23

回答

1

在您的正則表達式中更改\s+\s*\s+匹配一個或多個空格字符,其中\s*匹配零個或多個空格字符。

\n\s*(?=<) 

DEMO

string str = @"<h1>My Html</h1> 
<div> 
<p>bla bla bla</p> 
<table> 
<!-- table content --> 
</table> 
</div>"; 
string result = Regex.Replace(str, @"(?m)\n\s*(?=<)", ""); 
Console.WriteLine(result); 
Console.ReadLine(); 

IDEONE

+0

此功能已經生效,但在將\ n更改爲\ n *之後也是 – user2865446 2014-11-25 04:39:41

+0

是的,'\ s +'匹配一個或多個空格字符,包括換行符。但我總是在我的答案中推薦你正則表達式,因爲如果一行有兩個連續標籤,如'' – 2014-11-25 04:41:02

相關問題