Взять строку в Richtext поле

Dragon108

Well-known member
19.01.2010
265
0
#1
Есть поле Richtext , в нем надо найти строку, и взять следующие 10 символов идущие после нее в поле. Какие есть функции и как можно реализовать?
Заранее Спасибо.
 

alik86

Lotus team
20.11.2008
465
1
#2
Открываете в хелпе NotesRichTextItem class и смотрите - там Вы найдете GetFormattedText method и еще много интересного... ;)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
276
#3
есть ещё РТнафигатор, но он глючен...
 

Dragon108

Well-known member
19.01.2010
265
0
#4
Целиком задача звучала так:
Есть поле рич текст , в нем есть строчка "Дата рождения <dd.mm.yyyy>". Необходимо было найти эту строчку и взять только <dd.mm.yyyy> и записать данное значение в поле Дата рождения(birthday_edit) в документе.

Придумал следующее решение. Написал следующего агента:

Код:
'Агент: Берется поле рич текст, ищется в нем информацию и сохраняется в поле с типом дата (предварительно преобразовываются данные)
'1) Берет все выделенные документы, и по очереди обрабатывает их
'2) В каждом выделенном документе берет поле Рич текст и записывает ее в строковую переменную
'3) Разбивает данную строковую переменную на элементы массива и соответственно загоняет все в массив
'4) Ищет по полученному массиву слово Дата и возвращает индекс данного элемента
'5) Прибавляет к индексу данного элемента 2, (полученный индекс будет являться индексом даты (числа))
'6) Берет по данному индексу элемент из массива, удаляет у данного элемента символы переноса строки в начале и конце элемента
'7) Записывает полученную даты в поле Дата Рождения и сохраняет документ

Sub Initialize

'Обработчик ошибок
On Error Goto errorhandler

Dim ws As NotesUIWorkspace
Dim uiview As NotesUiView
Dim ses As Notessession
Dim db As NotesDatabase, mailDb As NotesDatabase	
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument, mailDoc As NotesDocument

'Счетчик
Dim i%

'Переменные полей
Dim item3 As NotesRichTextItem
Dim item4 As NotesItem


'Массив строк для разбияния и сохранения в нем текста из поля рич текст
Dim ret As Variant

'Индекс элемента Дата в массиве
Dim nash_result As Variant
'Индекс самой даты в массиве
Dim nash_result_1 As Variant
'Переменная для хранения полученной даты
Dim temp As String

Set ws = New NotesUIWorkspace	
Set uiview = ws.CurrentView
Set coll = uiview.Documents

'Для каждого отмеченного документа выполянет действия
If coll.Count > 0 Then	
For i%=1 To coll.Count
Set doc = coll.GetNthDocument(i%)

'Берет поле Рич текст
Set item3 = doc.GetFirstItem( "Body" )

'Записывает весь текст из поля рич текст с строковую переменную
plainText$ = item3.GetFormattedText( True, 10 )

'Разбивает текстовую переменную на элементы массива
ret = Split (plainText$, , -1, 0)

'Убирает у элементов пробелы (на свякий случай)
ret = Fulltrim (ret)

'Получает индекс элемента (слова Дата) в массиве строк
nash_result = Arraygetindex( ret, "Дата" ,0 ) 

'Прибавляет к полученному индексу 2, таким образом получаем индекс даты рождения (цифры) 
nash_result_1 = nash_result + 2

'Сохраняем дату рождения в переменную temp
temp = ret(nash_result_1)

'Удаляем лишние переносы строки (спереди и сздаи нашей даты, дата- 10 символов)
temp = Left(temp, 12)
temp = Right(temp, 10)

'Записываем полученную даты в поле Дата рождения
Set item4 = doc.ReplaceItemValue("birthday_edit", temp)

Call doc.Save( True, True )

Next		
Else
Msgbox "Выберите документы"
End If



errorhandler:
If Err <> False Then
Msgbox "Ошибка: " +Error$ + Chr(10) + " Код ошибки: " + Cstr(Err) + Chr(10) + "Строка ошибки: "+ Cstr(Erl)+ Chr(10) + "Передайте эту информацию разработчику.", 0 +16, "Ошибка"
Exit Sub
End If


End Sub


Вот как то так. А вдруг кому нить пригодиться :)
 

TIA

:-)
Lotus team
15.05.2009
790
3
#5
Не будет работать если Body станет достаточно большим.
Что будет если не окажется слова "Дата"?
Коллекцию лучше перебирать через coll.getNextDocument.
 
13.03.2009
625
1
#6
Попробуйте прочитать это вслух: Рекомендую к еженедельному прочтению по пятницам:
(c) Roedy Green сказал(а):
.. я передаю эти подсказки мастеров о том, как писать код, настолько трудный для поддержки, что у людей, пришедших после вас, уйдут годы на внесение даже малейших изменений. Более того, скрупулезно следуя всем этим правилам, вы гарантируете себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в этом аду. При достаточной дотошности, использовав все правила, даже вы не сможете поддерживать собственный код.
Тем не менее, не стоит увлекаться. Ваш код должен не выглядеть безнадежным, а всего лишь быть таким. Иначе есть опасность, что код перепишут или устроят ему рефакторинг. ...
Продолжение тут