Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Октябрь 2017, 13:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Заменить подстроку в текстовом документе без изменения стилей  (Прочитано 214 раз)
0 Пользователей и 1 Гость смотрят эту тему.
karpo518
Пользователь
**
Offline Offline

Сообщений: 51


« Стартовое сообщение: 8 Август 2017, 11:24 »

Добрый день. Необходимо сделать замену подстроки в конкретном 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
Записан

Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 346


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 8 Август 2017, 11:42 »

...присвоение TextPortion.String любого значения убивает все стили текста. В моем случае текст перестаёт быть жирным. Как сохранить форматирование заменяемой подстроки?
Как кричал Станиславский - НЕ ВЕРЮ!
Речь идёт действительно о стилях или о ручном форматировании? Этот самый код на моём тестовом примере отработал так, как и ожидалось
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 231


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #2: 8 Август 2017, 12:13 »

Как кричал Станиславский - НЕ ВЕРЮ!
Речь идёт действительно о стилях или о ручном форматировании? Этот самый код на моём тестовом примере отработал так, как и ожидалось
Свойство .String — содержит в себе строковые символы и влиять на что-либо другое кроме строковых символов не может. У меня тоже не меняет стили.

Могут быть условные стили или что-нибудь другое. Нужно смотреть документ.
Записан

economist
Ветеран
*****
Offline Offline

Сообщений: 715


« Ответ #3: 8 Август 2017, 12:23 »

У меня стиль (жирность стиля) - в тексте после замены сохраняет. Тут у ТС 100500 ручное форматирование.
В Ctrl+H - Другие - Атрибуты нет никаких флажков по-умолчанию? На какой-то машине с Debian у меня было подобное, в интерактивном режиме получался подобный эффект.

Кстати, условные стили ни разу в живой природе не встречал, хотелось бы понять кейсы, когда они нужны.   
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 231


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 8 Август 2017, 16:48 »

Как кричал Станиславский - НЕ ВЕРЮ!
Как Станиславский Станиславскому говорю: ВЕРЬ! Ты ещё и не такое увидишь на форуме Шокирован

Начну с того, что для поиска и/или замены надо использовать дескриптор поиска или замены, а не перебор частей абзаца.

При замене строки у абзаца или части абзаца происходит изменение стиля символов, это мне кажется глюк.
Записан

Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!