2012-05-24 67 views
0

我有一個數據表可以通過將HTML去掉而被修改。在html條帶期間,如果遇到<br>,<p><li>,則它們將替換爲System.Environment.NewLine。我將html strip進程的實例記錄到一個文本文件中,格式在日誌中看起來很好(所有的CRLF都被保留)。但是,如果在數據表上調用update方法並將數據發送到數據庫,則CRLF字符全部消失。更新數據表後,換行符在SQL中被剝離

代碼片段:

public static class HtmlStripper 
{ 
    static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled); 
    static Regex _liRegex = new Regex("<li>", RegexOptions.Compiled); 
    static Regex _brRegex = new Regex("<(br)?(BR)?\\s?/?>\\s*", RegexOptions.Compiled); 
    static Regex _pRegex = new Regex("</?[phPH].*?>\\s*", RegexOptions.Compiled); 

    public static string StripTagsRegexCompiled(string source) 
    { 
     string noPorH = _pRegex.Replace(source, System.Environment.NewLine); 
     string noBr = _brRegex.Replace(noPorH, System.Environment.NewLine); 
     string noLi = _liRegex.Replace(noBr, System.Environment.NewLine + "t- "); 
     return _htmlRegex.Replace(noLi, string.Empty); 
    } 

} 
+0

一些代碼snipits會有助於回答你的問題。 – user957902

+1

您是否使用Sql Server Management Studio檢查數據庫中的數據?如果是這樣,在顯示時刪除換行符(但數據仍然正確) –

+0

我將SSMS中的數據複製到Notepad ++中,並且CRLF字符全部消失。 –

回答

0

SSMS刪除CRLF在數據網格中 - 但它們仍然存在於數據庫中。您可以通過按CTRL-T來證明這一點,它可以將您的結果轉換爲TEXT而不是GRID。然後,您可以按CTRL-D返回以在GRID中顯示結果。

SELECT 'Not' + CHAR(10) + CHAR(13) + 'Together' 

首先通過顯示在網格中的結果:然後在文本結果

(No Column name) 
Not Together 

你可以測試這個

SQL Server parse and compile time: 
    CPU time = 0 ms, elapsed time = 0 ms. 

------------- 
Not 

Together 

(1 row(s) affected) 


SQL Server Execution Times: 
    CPU time = 0 ms, elapsed time = 0 ms. 
SQL Server parse and compile time: 
    CPU time = 0 ms, elapsed time = 0 ms. 

SQL Server Execution Times: 
    CPU time = 0 ms, elapsed time = 0 ms.