سؤال

أود أن ألقي بعض RTF المدخلات نظيفة لإزالة جميع RTF التنسيق باستثناء \ماي \b \i لصقه في كلمة طفيفة تنسيق المعلومات.

الأوامر المستخدمة في لصق كلمة سوف يكون شيئا مثل:oWord.ActiveDocument.ActiveWindow.اختيار.PasteAndFormat(0) (مع بعض نص RTF بالفعل في الحافظة)

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}}
{\colortbl ;\red255\green255\blue140;}
\viewkind4\uc1\pard\highlight1\lang3084\f0\fs18 The company is a global leader in responsible tourism and was \ul the first major hotel chain in North America\ulnone  to embrace environmental stewardship within its daily operations\highlight0\par

هل لديك أي فكرة كيف يمكن تنظيف RTF بأمان مع بعض التعبيرات العادية أو شيء ما ؟ أنا باستخدام VB.NET إلى القيام بتجهيز ولكن أي .صافي اللغة عينة سوف تفعل.

هل كانت مفيدة؟

المحلول

وأود أن استخدام خفية RichTextBox تعيين Rtf الأعضاء ، ثم استرداد النص الأعضاء تطهير RTF في مدعومة بشكل جيد.ثم أود أن استخدام يدويا حقن المطلوب التنسيق بعد ذلك.

نصائح أخرى

كنت تفعل شيئا مثل التالية:

Dim unformatedtext As String

someRTFtext = Replace(someRTFtext, "\ul", "[ul]")
someRTFtext = Replace(someRTFtext, "\b", "[b]")
someRTFtext = Replace(someRTFtext, "\i", "[i]")

Dim RTFConvert As RichTextBox = New RichTextBox
RTFConvert.Rtf = someRTFtext
unformatedtext = RTFConvert.Text

unformatedtext = Replace(unformatedtext, "[ul]", "\ul")
unformatedtext = Replace(unformatedtext, "[b]", "\b")
unformatedtext = Replace(unformatedtext, "[i]", "\i")

Clipboard.SetText(unformatedtext)

oWord.ActiveDocument.ActiveWindow.Selection.PasteAndFormat(0)

يمكنك نزع العلامات مع التعبيرات العادية.فقط تأكد من أن التعبيرات الخاصة بك لن تصفية الكلمات التي كانت في الواقع النص.إذا كان النص "\b" في متن النص ، يبدو \ب في RTF تيار.وبعبارة أخرى, يمكنك أن تطابق "\b" ولكن ليس "\b".

وربما كنت يمكن أن تأخذ طريقا مختصرا و تصفية رأس RTF العلامات.البحث عن التواجد الأول "\viewkind4" في المدخلات.ثم قراءة الأمام إلى أول حرف مسافة.يمكنك إزالة كافة الأحرف من بداية النص إلى أن مساحة شخصية.أن قطاع من RTF معلومات رأس (الخطوط والألوان وما إلى ذلك).

Regex ذلك ، فإنه لن تحليل كل شيء بشكل صحيح (الجداول على سبيل المثال) ولكن لا وظيفة في معظم الحالات.

string unformatted = Regex.Replace(rtfString, @"\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?", "");

السحر =)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top