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

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#1
Здравствуйте.
Проблема такая:
Есть поле СОДЕРЖАНИЕ (Rich Text)
В нем абзацами текст.

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

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

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

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

Но при этом
В лотусе:
Текст абзаца 1
Текст абзаца 2

Текст абзаца 3
В Text$
Текст абзаца 1Текст абзаца 2
Текст абзаца 3
В чем ошибка?
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#3
Я не могу понять, как правильно в поле "СОДЕРЖАНИЕ" лотус скриптом находить абзацы.
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#5
Не совсем, надо что то типа:
Set rtitem = doc.GetFirstItem("СОДЕРЖАНИЕ")
sText$ = Implode(rtitem.Text,Evaluate({@NewLine}))

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 491
367
#6
здесь была ссылка на проект...
в нем РТ конвертился в хтмл, причем не только текст, но и картинки
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#8
Сделать временный док с одним полем, перегнать его с CreateDXLExporter в поток?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#9
Абзацы находятся с помощью NotesRichTextNavigator. Пример в хелпе есть.
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#10
Когда перебираю абзацы с rtnav.FindNextElement() и выделяю их с NotesRichTextRange, то как найти абзацы, которые разделены Enter ?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#11
В смысле? Если перебираешь RTELEM_TYPE_TEXTPARAGRAPH, то это и будут абзацы, разделённые Enter.
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#12
Не совсем точно описал проблему. Как с FindNextElement получить пустую строку? Абзацы при вводе разделены ентером.
Пример:
Было:
Абзац1
Абзац2
энтер, тут пустая строка.
Абзац3

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

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

Leoric

Well-Known Member
15.10.2003
60
16
#13
Может вам надо что-то типа:
Код:
	Set body = doc.GetFirstItem("Body")	
Messagebox ReplaceSubstringValue( body.GetFormattedText(False, 32000), Chr(13), "<br>")
Здесь ReplaceSubstringValue это просто самописная функция поиска и замены подстроки
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 491
367
#14
Chr(13) возврат каретки (carriage return CR)
Chr(10) прокрутка (дословно - подача) строки (line feed - LF)
LF и есть новая строка, в современных системах!
но вот однозначной замены произвести не получится (см ссылку)
 

Leoric

Well-Known Member
15.10.2003
60
16
#15
Chr(13) возврат каретки (carriage return CR)
Chr(10) прокрутка (дословно - подача) строки (line feed - LF)
LF и есть новая строка, в современных системах!
но вот однозначной замены произвести не получится (см ссылку)
Я с вами не спорю, но при замене LF получится
Код:
Абзац1
<br>Абзац2
<br>
<br>Абзац3
а при замене CR получается
Код:
Абзац1<br>
Абзац2<br>
<br>
Абзац3
ИМХА, топикстартеру необходим именно второй вариант, возможно с "добиванием" в конце еще одним <br>-ом, хотя зависит от задачи конечно.