Опять замена

  • Автор темы oxystile
  • Дата начала
O

oxystile

#1
необходимо в поле одно слово заменить на другое, например dog на cat (лотус агентом)
если поле текстовое, то с этим вроде как понятно:
Код:
contens=item.text
temp=Replace(contens,"dog","cat")
Set item1 = doc.ReplaceItemValue( item.Name, temp)
:) правда...не нарушится ли в этом случае целостность, если поле типа multiply? т.е. вернется ли в поле текст согласно тем же разделителям?
потому что,item.text :
Multiple values in a list are separated by semicolons in the returned string. If an item's value is large, the returned string may be truncated.
For rich text items, this property skips non-text data such as bitmaps and file attachments.


И вопрос посерьезнее, как заменить слова, если поле типа Richtext, например с картинками или со вложенными файлами?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Replace и так для массивов работает. Не нужно в строку преобразовывать.
В RichText, наверное, с помощью NotesRichTextNavigator.
 

susinmn

Well-known member
16.10.2007
529
3
#3
Попробуй так...
for i=0 to Ubound(doc.item)
if cstr(doc.(item)(i))="dog" then
doc.item(i)="cat"
end if
next
 
O

oxystile

#7
спасибо!
еще вопрос, как отличить и исключить из замены слова типа dodog и dogger
но в тоже время не исключать, например такого типа ;dog и dog-
проверкой на chr?
 
O

oxystile

#10
не все идеально...
ArrayReplace не сработает если например item.values(i)="big dog" , весь item принимается за массив и каждый элемент массива сравнивается с элементом, кот. ищем, ну а "big dog"<>"dog"
Replace не различает граници слова, т.е. если искомое слово-это просто часть другого, то замена все равно будет сделана
поэтому сперва проверяю, если ли слово, если да, то использую ArrayReplace, если ArrayReplace ничего не заменил, тогда прохожу по item.values и в них уже ручками проверяю есть ли это слово или это слово просто часть другого.

возник такой вопрос, как в item.values(i) заменить значение?
tem.values(i)="что-то там" не работает
 
O

oxystile

#12
потом join
а как итоговый результат присвоить item.values(i)?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#13
*Удалил, т.к. не сработало бы* :)

А еще лучше свою функцию написать.
 

Omh

Lotus team
04.07.2007
2 210
1
#15
oxystile
У тебя multivalue поле где каждое значение может быть слово или предложением?

Если словом, то я бы заюзал ArrayReplace
Если же предложением, то перебором + Replace на каждом значении (предложении)