我有使用javascript將RTF格式(RichText格式)轉換爲純文本和從RTF格式轉換純文本的需求。將RTF轉換爲純文本格式
我正在爲每個轉換尋找一個函數,而我並不想使用庫。
從普通轉換爲RTF
格式樣式和顏色並不重要,最重要的事情是,純文本我轉換成有效 RTF格式從RTF到
轉換plain
此外,樣式並不重要。他們可以完成刪除。所有需要的是,所有文本數據仍然(沒有輸入數據的損失)
我有使用javascript將RTF格式(RichText格式)轉換爲純文本和從RTF格式轉換純文本的需求。將RTF轉換爲純文本格式
我正在爲每個轉換尋找一個函數,而我並不想使用庫。
從普通轉換爲RTF
格式樣式和顏色並不重要,最重要的事情是,純文本我轉換成有效 RTF格式從RTF到
轉換plain
此外,樣式並不重要。他們可以完成刪除。所有需要的是,所有文本數據仍然(沒有輸入數據的損失)
我found a c# answer here這是一個很好的起點,但我需要一個Javascript解決方案。
不能保證這些是100%可靠的,但它們似乎與我測試過的數據一致。
function convertToRtf(plain) {
plain = plain.replace(/\n/g, "\\par\n");
return "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\n\\viewkind4\\uc1\\pard\\f0\\fs17 " + plain + "\\par\n}";
}
function convertToPlain(rtf) {
rtf = rtf.replace(/\\par[d]?/g, "");
return rtf.replace(/\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?/g, "").trim();
}
他們兩個在行動
添加到Musefan的回答一些十六進制字符
function convertToPlain(rtf) {
rtf = rtf.replace(/\\par[d]?/g, "");
rtf = rtf.replace(/\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?/g, "")
return rtf.replace(/\\'[0-9a-zA-Z]{2}/g, "").trim();
}
或Here is a working example [這裏](https://github.com/lazygyu/RTF-parser)你有lazygyu的JavaScript RTF分析器 – Kaiido
如果可以的話,我會給你100個upvotes,謝謝! – user3897392
這對於Unicode輸入(非英文字符,印刷引號等)不起作用。 – mirabilos