firex
AutoIT Гуру
- Сообщения
- 943
- Репутация
- 208
Доброго времени суток.
Требуется извлекать только текстовые данные из RTF(raw), пример:
Строка 1: Требуемый результат
Строка 2: Текущий результат ( не верный )
Далее >: RTF(raw)
В спешке написал следующую функцию, но ее недостаточно (возвращает данные вида Строка 2):
Ранее я не сталкивался лоб в лоб с этим форматом... и разбираться сейчас в нем нет ни времени, ни желания. Может у кого есть наработки? Заранее благодарю.
Требуется извлекать только текстовые данные из RTF(raw), пример:
Код:
События А1…Аn не могут быть случаями, если они
События А…Ане могут быть случаями, если они
{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\froman\fprq2\fcharset204{\*\fname Times New Roman;}Times New Roman CYR;}}
\viewkind4\uc1\pard\lang1049\f0\fs28\'d1\'ee\'e1\'fb\'f2\'e8\'ff \i\'c0\sub 1\nosupersub\'85\'c0\lang1033\sub n\lang1049\nosupersub\i0 \'ed\'e5 \'ec\'ee\'e3\'f3\'f2 \'e1\'fb\'f2\'fc \'f1\'eb\'f3\'f7\'e0\'ff\'ec\'e8, \'e5\'f1\'eb\'e8 \'ee\'ed\'e8 \par
}
Строка 2: Текущий результат ( не верный )
Далее >: RTF(raw)
В спешке написал следующую функцию, но ее недостаточно (возвращает данные вида Строка 2):
Код:
Func _RtfToStr( $sRtf_raw )
Local $aExp, $sRet, $Idx
; ---
$aExp = StringRegExp( $sRtf_raw, "\'([^\\]+)\\", 3, StringInStr( $sRtf_raw, "\fs28\" ) )
For $Idx = 0 To UBound( $aExp ) - 1 Step 1
If StringRegExp( $aExp[$Idx], '^[0-9a-f]{2}' ) Then
$sRet &= BinaryToString( "0x" & StringLeft( $aExp[$Idx], 2 ) ) & StringTrimLeft( $aExp[$Idx], 2 )
Else
$sRet &= $aExp[$Idx]
EndIf
Next
Return StringRegExpReplace( $sRet, "(\\|[\r\n]*)", "" )
EndFunc
Ранее я не сталкивался лоб в лоб с этим форматом... и разбираться сейчас в нем нет ни времени, ни желания. Может у кого есть наработки? Заранее благодарю.