Добрый день. Необходимо сделать замену подстроки в конкретном Portion текстового документа и при этом сохранить его стили. Как это сделать? Ниже пример из документации (https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Editing_Text_Documents). Проблема его в том, что присвоение TextPortion.String любого значения убивает все стили текста. В моем случае текст перестаёт быть жирным. Как сохранить форматирование заменяемой подстроки?
Dim Doc As Object
Dim Enum1 As Object
Dim Enum2 As Object
Dim TextElement As Object
Dim TextPortion As Object
Doc = ThisComponent
Enum1 = Doc.Text.createEnumeration
' loop over all paragraphs
While Enum1.hasMoreElements
TextElement = Enum1.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Enum2 = TextElement.createEnumeration
' loop over all sub-paragraphs
While Enum2.hasMoreElements
TextPortion = Enum2.nextElement
MsgBox "'" & TextPortion.String & "'"
TextPortion.String = Replace(TextPortion.String, "you", "U")
TextPortion.String = Replace(TextPortion.String, "too", "2")
TextPortion.String = Replace(TextPortion.String, "for", "4")
Wend
End If
Wend
Цитата: karpo518 от 8 августа 2017, 11:24
...присвоение TextPortion.String любого значения убивает все стили текста. В моем случае текст перестаёт быть жирным. Как сохранить форматирование заменяемой подстроки?
Как кричал Станиславский - НЕ ВЕРЮ!
Речь идёт действительно о стилях или о ручном форматировании? Этот самый код на моём тестовом примере отработал так, как и ожидалось
Цитата: JohnSUN от 8 августа 2017, 09:42Как кричал Станиславский - НЕ ВЕРЮ!
Речь идёт действительно о стилях или о ручном форматировании? Этот самый код на моём тестовом примере отработал так, как и ожидалось
Свойство .String — содержит в себе строковые символы и влиять на что-либо другое кроме строковых символов не может. У меня тоже не меняет стили.
Могут быть условные стили или что-нибудь другое. Нужно смотреть документ.
У меня стиль (жирность стиля) - в тексте после замены сохраняет. Тут у ТС 100500 ручное форматирование.
В Ctrl+H - Другие - Атрибуты нет никаких флажков по-умолчанию? На какой-то машине с Debian у меня было подобное, в интерактивном режиме получался подобный эффект.
Кстати, условные стили ни разу в живой природе не встречал, хотелось бы понять кейсы, когда они нужны.
Цитата: JohnSUN от 8 августа 2017, 09:42Как кричал Станиславский - НЕ ВЕРЮ!
Как Станиславский Станиславскому говорю: ВЕРЬ! Ты ещё и не такое увидишь на форуме :o
Начну с того, что для поиска и/или замены надо использовать дескриптор поиска или замены, а не перебор частей абзаца.
При замене строки у абзаца или части абзаца происходит изменение стиля символов, это мне кажется глюк.