• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Опять замена

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

oxystile

необходимо в поле одно слово заменить на другое, например 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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Replace и так для массивов работает. Не нужно в строку преобразовывать.
В RichText, наверное, с помощью NotesRichTextNavigator.
 
S

susinmn

Попробуй так...
for i=0 to Ubound(doc.item)
if cstr(doc.(item)(i))="dog" then
doc.item(i)="cat"
end if
next
 
M

morpheus

f(0) = "dog"
c(0) = "cat"
Replace( doc.GetItemValue("item") ,f,c)
 
O

oxystile

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

oxystile

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

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

oxystile

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
*Удалил, т.к. не сработало бы* :)

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

Omh

oxystile
У тебя multivalue поле где каждое значение может быть слово или предложением?

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!