2015-04-28 23 views
6

Tôi có yêu cầu chuyển đổi văn bản thuần sang và từ RTF (Định dạng RichText) bằng javascript.Chuyển đổi RTF sang và từ văn bản thuần túy

Tôi đang tìm kiếm một chức năng cho mỗi chuyển đổi, và tôi không muốn sử dụng thư viện.

Chuyển đổi từ đồng bằng đến RTF

Các phong cách định dạng và màu sắc không quan trọng, tất cả những vấn đề là các văn bản đơn giản tôi chuyển sang một định dạng RTF hợp lệ

Chuyển đổi từ RTF để đồng bằng

Một lần nữa, phong cách không quan trọng. Họ có thể được hoàn thành loại bỏ. Tất cả những gì được yêu cầu là tất cả vẫn giữ nguyên dữ liệu văn bản (không mất dữ liệu đã nhập)

Trả lời

9

I found a c# answer here là điểm khởi đầu tốt, nhưng tôi cần một giải pháp Javascript.

Không có đảm bảo rằng đây là 100% đáng tin cậy, nhưng họ dường như làm việc tốt với các dữ liệu tôi đã thử nghiệm trên.

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 trong số họ cả trong hành động

+0

hoặc [ở đây] (https://github.com/lazygyu/RTF-parser) bạn đã có một trình phân tích cú pháp RTF javascript bởi lazygyu – Kaiido

+0

Tôi sẽ cung cấp cho bạn 100 upvotes cho điều này nếu tôi có thể, cảm ơn bạn! – user3897392

+0

Điều này sẽ không hoạt động tốt đối với đầu vào Unicode (ký tự không phải tiếng Anh, dấu ngoặc kép, vv). – mirabilos

0

Thêm vào câu trả lời Musefan cho một số nhân vật hex

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(); 
} 
Các vấn đề liên quan