【发布时间】:2015-04-28 14:57:14
【问题描述】:
我需要使用 javascript 将纯文本与 RTF(RichText 格式)相互转换。
我正在为每次转换寻找一个函数,我不想使用库。
从纯文本转换为 RTF
格式样式和颜色并不重要,重要的是我将纯文本转换为有效 RTF格式
从 RTF 转换为普通格式
同样,样式并不重要。他们可以完成删除。只需要保留所有文本数据(输入数据不会丢失)
【问题讨论】:
标签: javascript rtf
我需要使用 javascript 将纯文本与 RTF(RichText 格式)相互转换。
我正在为每次转换寻找一个函数,我不想使用库。
从纯文本转换为 RTF
格式样式和颜色并不重要,重要的是我将纯文本转换为有效 RTF格式
从 RTF 转换为普通格式
同样,样式并不重要。他们可以完成删除。只需要保留所有文本数据(输入数据不会丢失)
【问题讨论】:
标签: javascript rtf
我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();
}
Here is a working example 他们都在行动
【讨论】:
在 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();
}
【讨论】: