Перенос Абзацев В Стринг

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 16 янв 2015.

  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Здравствуйте.
    Проблема такая:
    Есть поле СОДЕРЖАНИЕ (Rich Text)
    В нем абзацами текст.

    Я хочу получить его в Text$, чтобы каждый абзац разделялся тегом "<br/>", для дальнейшего использования в html.

    Делаю так
    кидаю содержимое поля СОДЕРЖАНИЕ в переменную Text$.

    string1 = Chr(10)+Chr(13) ' что заменяем
    string2 = "<br/>" ' на перенос

    И потом в Text$ заменяю string1 на string2.

    Но при этом
    В лотусе:
    В Text$
    В чем ошибка?
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    тут правильнее делать замену @NewLine
     
  3. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Я не могу понять, как правильно в поле "СОДЕРЖАНИЕ" лотус скриптом находить абзацы.
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Если я правильно понял, то:
    Код (LotusScript):
    abzac = implode(Evaluate({@NewLine}))
     
  5. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Не совсем, надо что то типа:
    Set rtitem = doc.GetFirstItem("СОДЕРЖАНИЕ")
    sText$ = Implode(rtitem.Text,Evaluate({@NewLine}))

    Разделить абзацы из поля "СОДЕРЖАНИЕ" в переменную sText$.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    здесь была ссылка на проект...
    в нем РТ конвертился в хтмл, причем не только текст, но и картинки
     
  7. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Ну - надо не rtitem.Text брать, а через DXL. И уже там, интерпретировать разделители\переносители.
     
  8. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Сделать временный док с одним полем, перегнать его с CreateDXLExporter в поток?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Абзацы находятся с помощью NotesRichTextNavigator. Пример в хелпе есть.
     
  10. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Когда перебираю абзацы с rtnav.FindNextElement() и выделяю их с NotesRichTextRange, то как найти абзацы, которые разделены Enter ?
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В смысле? Если перебираешь RTELEM_TYPE_TEXTPARAGRAPH, то это и будут абзацы, разделённые Enter.
     
  12. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Не совсем точно описал проблему. Как с FindNextElement получить пустую строку? Абзацы при вводе разделены ентером.
    Пример:
    Было:
    Абзац1
    Абзац2
    энтер, тут пустая строка.
    Абзац3

    Стало:
    Абзац1
    Абзац2
    Абзац3

    А мне нужно, чтобы "было" и "стало" совпадали.
     
  13. Leoric

    Leoric Well-Known Member

    Регистрация:
    15 окт 2003
    Сообщения:
    57
    Симпатии:
    16
    Может вам надо что-то типа:
    Код (LotusScript):
        Set body = doc.GetFirstItem("Body")
    Messagebox ReplaceSubstringValue( body.GetFormattedText(False, 32000), Chr(13), "<br>")
    Здесь ReplaceSubstringValue это просто самописная функция поиска и замены подстроки
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    Chr(13) возврат каретки (carriage return CR)
    Chr(10) прокрутка (дословно - подача) строки (line feed - LF)
    LF и есть новая строка, в современных системах!
    но вот однозначной замены произвести не получится (см ссылку)
     
  15. Leoric

    Leoric Well-Known Member

    Регистрация:
    15 окт 2003
    Сообщения:
    57
    Симпатии:
    16
    Я с вами не спорю, но при замене LF получится
    Код (Text):
    Абзац1
    <br>Абзац2
    <br>
    <br>Абзац3
    а при замене CR получается
    Код (Text):
    Абзац1<br>
    Абзац2<br>
    <br>
    Абзац3
    ИМХА, топикстартеру необходим именно второй вариант, возможно с "добиванием" в конце еще одним <br>-ом, хотя зависит от задачи конечно.
     
Загрузка...

Поделиться этой страницей