2010-09-13 81 views
1

我有一個HTML節點:如何刪除XmlNodeType.Text節點中無關緊要的空格?

<p>Line1 
Line2 
Line 
ThereAreTwoSpacesAfterThis ThereAreTwoSpacesBeforeThis 
</p> 

在任何瀏覽器中,最終使用的結果是

Line1 Line2 Line ThereAreTwoSpacesAfterThis ThereAreTwoSpacesBeforeThis 

這是我想要的結果。

那麼如何去除XmlNodeType.Text節點(C#)中無關緊要的空白?

============================================== ===========

嗨,大家好,感謝您的回覆。

其實我正在從一個網頁(html)中提取所有文本的小項目:類似於從Firefox或IE中「另存爲頁面作爲文本文件」。

我試過使用Html Agility Pack,但結果不夠好。

我也嘗試過使用WebBrowser控件,但它看起來太慢了,而且控制它並不那麼容易。

任何好主意?

我明白,傢伙建議我使用正則表達式,但有太多的情況下想想。

+0

哇,大胖子轉移的要求。你的問題最初只是*關於'p'標籤內的文本和*僅*關於刪除空格的問題。現在,您要問如何*以純文本格式渲染整個HTML頁面?據推測,你也希望它能夠正確解釋每個元素的CSS「white-space」屬性,它控制着空白的崩潰?你正在編寫一個全面的HTML渲染引擎的第一步。 – Timwi 2010-09-20 03:05:49

+0

你說得對。對困惑感到抱歉。我搜索了很多關於將html轉換爲純文本的信息,但沒有運氣。我得到的只是使用Html Agility Pack,這對我來說不夠用。謝謝。 – 2010-09-25 05:57:42

回答

1

Just use a regular expression!

var spacesSquashed = Regex.Replace(input, @"\s+", " ", RegexOptions.Singleline); 

如果您也想刪除在開頭和結尾的所有空格,因爲在HTML慣例,在末尾添加一個額外的.Trim()

+0

因爲你包括那個引用而被誘惑:)對於這個特定的用法,我想正則表達式是好的... – 2010-09-13 08:21:05

+0

請看我更新的問題。感謝您的回覆。 – 2010-09-19 21:04:38