Опять замена

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

  1. oxystile

    oxystile Гость

    необходимо в поле одно слово заменить на другое, например dog на cat (лотус агентом)
    если поле текстовое, то с этим вроде как понятно:
    Код (Text):
    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, например с картинками или со вложенными файлами?
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Replace и так для массивов работает. Не нужно в строку преобразовывать.
    В RichText, наверное, с помощью NotesRichTextNavigator.
     
  3. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Попробуй так...
    for i=0 to Ubound(doc.item)
    if cstr(doc.(item)(i))="dog" then
    doc.item(i)="cat"
    end if
    next
     
  4. oxystile

    oxystile Гость

    а как? путем Forall v In item.Values?
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    f(0) = "dog"
    c(0) = "cat"
    Replace( doc.GetItemValue("item") ,f,c)
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Зачем?
    Call doc.ReplaceItemValue("Поле", Replace(doc.GetItemValue("Поле"), "dog", "cat"))
     
  7. oxystile

    oxystile Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    они будут исколючены
    dodog <> dogger
     
  9. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вместо Replace используй ArrayReplace.
     
  10. oxystile

    oxystile Гость

    ! спасибо !
     
  11. oxystile

    oxystile Гость

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    ArrayReplace( Split( tem.values(i), " " ), "dog", "cat" )
     
  13. oxystile

    oxystile Гость

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    *Удалил, т.к. не сработало бы* :)

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    1. Implode
    2. каждый отдельно .. лучше отдельным написать function/sub
     
  16. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    oxystile
    У тебя multivalue поле где каждое значение может быть слово или предложением?

    Если словом, то я бы заюзал ArrayReplace
    Если же предложением, то перебором + Replace на каждом значении (предложении)
     
Загрузка...
Похожие Темы - Опять замена
  1. vitte
    Ответов:
    10
    Просмотров:
    2.876
  2. Renat11111
    Ответов:
    8
    Просмотров:
    3.702
  3. sanch
    Ответов:
    5
    Просмотров:
    3.083
  4. NickProstoNick
    Ответов:
    5
    Просмотров:
    2.702
  5. aameno2
    Ответов:
    4
    Просмотров:
    3.117

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