2013-06-30 24 views
1

我試圖解析RTF文件中粗體文本的行。現在,我通過使用Regex並在文件中查找「\ b ... \ b0」標籤來做到這一點,但是留下了很多格式化文本,並且RTF中有很多格式化標籤我不能僅僅將它全部編碼並稱之爲一天。是否有一個更優雅的現有解決方案來解析只有特定格式的行?解析來自RTF的格式化文本

回答

0

我會用一個RTF分析器...想起RichTextBox。有幾種使用RTB獲取格式的方法。

+1

幾種方法如? – Abion47

0

不,我最近處理了一個項目,在這個項目中,我們不得不採取一個RTF文檔,並使用嵌入式媒體,並將其轉換爲MIME多部分郵件。我們構建了幾套RegEx來分解文檔的各個部分,然後將每個格式選項轉換爲適當的HTML/CSS標籤。真的沒有一種「優雅」的方式去做你想做的事。

你想用RTF做什麼?我們的最終目標是提供RTF的HTML轉換。我知道在WPF世界裏,RichTextBox能夠保存爲幾種格式,比如XAML,這樣可以擺脫自己處理解析的需要。

此外,市場上有RTF轉換器,所以在更多的上下文中,我可以提出更好的建議。

+0

我正在嘗試使用RTF文件,並將所有加粗的文本分離出來,並分成幾行。每個「行」將被確定爲同一行中粗體文本的不同部分,但由非粗體文本或由換行符打斷的任何粗體文本塊分隔。最終,我想最終得到一個純文本字符串列表,其中包含RTF文件中粗體顯示的每行文本。 – Abion47

+0

好吧,我在這裏有一個正則表達式模式,它可以匹配任何以粗體命令開始的運行。現在,我沒有考慮到每一種情況。如果您想接受特殊字符(!。,{}等),您將不得不修改您的正則表達式或修改這些字符在RTF中的存儲方式。提示:我們用令牌替換了它們。 所以,這裏是正則表達式。用它來獲取匹配列表,每個匹配都是大膽的字符。 '(?:\ {\\ b \\ ltrch \ s)(\ w *)(?:\}) – Th3BFG

+0

我搞砸了!那麼,不是一個huuuge搞砸了,但有些事情會有所幫助。使用這個正則表達式,它會抓住粗體文本部分中的任何東西: '(?:\ {\\ b \\ ltrch \ s)(。*?)(?:\}) – Th3BFG