DISKUSE
LS2J problém s jar (9)
01.09.2010 16:23

@dblookup funkčnost v IE 
01.09.2010 08:19

Replikacia? (3)
27.08.2010 12:35

tlačítka ve formuláři (1)
25.08.2010 13:21

Šifrované LN maily v BlackBerry (2)
18.08.2010 16:45

Programový bg color u formuláře (4)
13.08.2010 09:23

Mailto (2)
12.08.2010 15:08

spouštění LN administrator na Windows 2003 serveru (5)
11.08.2010 19:32


ŠKOLENÍ


REKLAMA


KOMENTÁŘE
Diskusní skupina: Notes/Domino R8


mhUvodzovky
24.04.2009
13:32:44

ID: 2905.0

mh
Pekny den!
Poradi mi niekto ako odstranim z textu znak uvodzovky ("). Dakujem.
mh dodatok
24.04.2009
14:13:49

ID: 2905.1


Zabudol som uviest príklad:
mam napr. text: "abcd"efgh"
potrebujem odstranit uvodzovku medzi 'd' a 'e'

Zaujimalo by ma riesenie cez LS a vzorce.
Dakujem.
Martin Humpolec Re: Uvodzovky


24.04.2009
15:28:30

ID: 2905.2


@ReplaceSubString( odkud; "\""; "")

skriptem to asi takhle elegantně nepůjde, takže to buď schovat do Evaluate nebo pokud člověk ví, že to tam bude jenom jednom tak StrLeft a StrRight.
Peter Mesiarik Re: Uvodzovky


developer

24.04.2009
23:15:00

ID: 2905.3


v LS by som pouzil Replace
mh nejde to :-((
28.04.2009
09:45:56

ID: 2905.4


Tak som to skusal a nejde to!

Tak este raz, mam text zadany v premennej tmp$:
tmp$ = „abcd „efgh“ ijk“

Teraz potrebujem odstranit uvodzovky vo vnutri textu, cize potrebujem dostat vysledny text:
tmp$ = „abcd efgh ijk“

pri pouziti nasledujuceho zapisu LN zahlasi, ze operacia zlyhala:
tmp0 = Evaluate(| @ReplaceSubstring( "| & tmp$ & |"; "\""; "" ) |)

skusal som dat aj tri uvodzovky, štyri ale nejde to

pri ladeni v LS som si vsimol, ze mi dany text zobrazuje takto:
„abcd „„efgh““ ijk“

Neviem ako na to. Da sa to vobec?
Budem vdacny za kazdu radu.
Ooaniki No nevim jestli jsem pochopil problem
LN admin

28.04.2009
11:34:52

ID: 2905.5


Neslo by to nejak takto?

Dim text As String
text = |„abcd „efgh“ ijk“|
Dim array2(2) As String
Dim array3(2) As String
array2(0) = "„"
array2(1) = "“"
array2(2) = |"|
array3(0) = ""
array3(1) = ""
array3(2) = ""
text = Replace(text, array2, array3)
Jiří Krákora Re: Uvodzovky


IT

28.04.2009
12:03:13

ID: 2905.6


Úplně primitivně:

Dim txt As String
txt = |abc "def" ghi|
Msgbox txt ' Nejprve zobrazit puvodni text
Msgbox Replace(txt, |"|, "") ' Pak zobrazit text bez uvozovek

Lokutus
mh :-((
28.04.2009
12:34:03

ID: 2905.7


Tak tento zapis mi LN neakceptuje:
tmp0 = Evaluate(| @ReplaceSubstring( "| & tmp$ & |"; |"|; "" ) |)

Ale zatial dik za pomoc.
mh :-)) tento zapis akceptuje
28.04.2009
12:44:10

ID: 2905.8


Tento zapis funguje:
tmp1$ = Replace( tmp$, |"|, "" )

este by som poprosil o radu ako to zapisat cez vzorec

Dakujem.
Jiří Krákora Re: Uvodzovky


IT

28.04.2009
13:01:16

ID: 2905.9


Vzorec napsal už Martin Humpolec na začátku.

txt := "aaa \"bbb\" ccc";
@Prompt([OK]; "Puvodni text s uvozovkami"; txt);
@Prompt([OK]; "Novy text bez uvozovek "; @ReplaceSubstring(txt; "\""; ""))

Lokutus
mh @ReplaceSubstring
28.04.2009
13:16:48

ID: 2905.10


Ano, ale v ID: 2905.4 som uviedol, ze mi pri tomto zapise LN zahlasi zlyhanie operacie.

tmp0 = Evaluate(| @ReplaceSubstring( "| & tmp$ & |"; "\""; "" ) |)

tak som myslel, ze zapis asi nebude spravny.
VZ IsArray
28.04.2009
13:45:02

ID: 2905.11


Toto je správně:
tmp0 = Evaluate(| @ReplaceSubstring( "| & tmp$ & |"; "\""; "" ) |)
Jenže ten výsledek je pole (Array), takže pokud se má hodnotou v tmp0 dále pracovat, pak třeba takto:
msgbox tmp0(0)
anebo takto:
If Isarray(tmp0) Then
Forall t In tmp0
Msgbox t
End Forall
End If
Jiří Krákora Re: Uvodzovky


IT

28.04.2009
13:55:34

ID: 2905.12


Ale to je samozřejmé že operace selhala. Důvod je právě ten, že inkriminovaná proměnná obsahovala znak uvozovek. Jakýkoliv evaluate selže při práci s textem, který obsahuje uvozovky. Proto je lepší ve skriptu používat prostý lotus skriptový Replace.

Lokutus
mh to VZ
28.04.2009
13:59:40

ID: 2905.13


Viem, ze evaluate vracia hodnotu typu pole, ale ja som pisal, ze LN mi uz priamo na danom vzorci zastavi cinnost a hlasi "Operation failed". Ale ako som pisal v ID: 2905.4, ci nemôze byt problem v tom, ze v texte mam zapisane „abcd „efgh“ ijk“ ale pri ladeni LS mi v okne ladenia programu zobrazuje text s dvoma uvodzovkami „abcd „„efgh““ ijk“. Ci do daneho vzorca nemam zapisat väcsi pocet lomitiek alebo uvodzoviek.
Dakujem.



mh to Jiří Krákora
28.04.2009
14:03:02

ID: 2905.14


ID: 2905.12

Takze cez vzorec dany problem nevyriesim.

Dakujem to som nevedel.
VZ To záleží na okolnostech
28.04.2009
14:12:02

ID: 2905.15


Odkud se ten text do té proměnné tmp$ dostane? Pokud by byl původně v nějakém políčku (Field) v dokumentu (např. v poli Subject), pak by to snad šlo i takto:

Dim ws As New NotesUIWorkspace
tmp0 = Evaluate({@ReplaceSubstring(Subject; "\""; "" )}, ws.CurrentDocument.Document)

Nebylo by třeba vůbec používat nějakou proměnou tmp$ v LS.
mh to VZ
28.04.2009
14:32:00

ID: 2905.16


Ano, ten text sa dostava do premennej z policka.
Skusal som aj tento zapis:
tmp0 = Evaluate(| @ReplaceSubstring( "| & doc.ag_aktivita( 0 ) & |"; "\""; "" ) |)
ale nejde to, neviem ci som vas spravne pochopil.
Dakujem.
VZ Je to jednoduché
28.04.2009
14:40:01

ID: 2905.17


tmp0 = Evaluate(| @ReplaceSubstring(ag_aktivita; "\""; "" ) |, doc)
Jiří Krákora Re: Uvodzovky


IT

28.04.2009
14:40:14

ID: 2905.18


Takže já bych to, s dovolením, shrnul, ať z toho neděláme gulash. :-)

1. Pro odstranění znaku uvozovky pomocí vzorců (nikoliv ve skriptu) lze použít toto:

txt := "aaa \"bbb\" ccc";
tmp := @ReplaceSubString(txt; "\""; "")

2. Pro odstranění znaku uvozovky v Lotus Scriptu lze použít toto:

Dim txt As String
Dim tmp as String

txt = |aaa "bbb" ccc|
tmp = Replace(txt, |"|, "")

popř., pokud pracujeme přímo s hodnotou v poli dokumentu, lze použít funkci Evaluate přes zmíněný dokument, tedy např.:

Dim Ses As New NotesSession
Dim Db As NotesDatabase
Dim Col As NotesDocumentCollection
Dim Doc As NotesDocument
Dim tmp As Variant

Set Db = Ses.CurrentDatabase
Set Col = Db.UnprocessedDocuments
Set Doc = Col.GetFirstDocument
tmp = Evaluate({@ReplaceSubstring(Subject; "\""; "" )}, Doc)
Msgbox tmp(0)

POZOR: Nelze použít funkci Evaluate na text, který obsahuje znak uvozovky, pokud se tato funkce neprovádí přímo nad dokumentem, nýbrž pracuje pouze se samotnou hodnotou!

Lokutus
JL nepochopil
IT

28.04.2009
14:41:44

ID: 2905.19


Podívejte se do Helpu na parametry fce "Evaluate"

tmp0 = Evaluate(| @ReplaceSubstring( ag_aktivita; "\""; "" ) |, doc)
Martin Humpolec Re: Uvodzovky


28.04.2009
15:05:11

ID: 2905.20


U toho Evaluate není problém v uvozovkách, akorát se to musí obalit něčím jiným než uvozovkama - v tom je ten problém.
Takže Evaluate( {@ReplaceSubString( |} + tmp$ + {|, |"|, ||)}) by taky mohlo fungovat.
VZ Jiné metody
28.04.2009
15:05:52

ID: 2905.21


Existují samozřejmě i jiné způsoby, např.:
@Implode(@Explode(ag_aktivita; "\""); "")

tmp0 = Evaluate({@Implode(@Explode(ag_aktivita; "\""); "")}, doc)

Ale na rozdíl od @ReplaceSubstring se to nehodí na multihodnotové pole. A takových různých programátorských udělátek třeba pomocí cyklů by se určitě našlo víc.
mpistora Nevalidní formule
28.04.2009
16:44:57

ID: 2905.22


V konstrukci
tmp0 = Evaluate(| @ReplaceSubstring( "| & tmp$ & |"; "\""; "" ) |)
je problém v tom, že se lotusskriptem zřetězí formule, která pak - v závislosti na obsahu tmp$ - může být nevalidní a Evaluate pak selže.
Konkrétně textový literál uzavřený v úvozovkách, který uvnitř obsahuje úvozovky bez předchozího escape znaku \. Podobně by to mohlo dopadnout i při použití { a } (svislítka lze použít jen v LS).

Lepší je proto ve formuli pro Evaluate použít místo skládání literálu referenci pole dokumentu, který se dává jako druhý argument Evaluate. A to i když hodnota v dokumentu není - pak lze nějaký doc vytvořit a jeho pole z lotusskriptu naplnit.
Výhodou je, že formule v Evaluate je konstanta a pak se její validnost se kontroluje už při kompilaci skriptu.
Nevýhodou je, že je to asi o něco pomalejší.
JL Pro doplnění
IT

29.04.2009
09:10:35

ID: 2905.23


Já radši než uvozovky se spětným lomítkem a pod. { "\"" }
používam @Char(34) nebo v LS chr(34)

Přidejte názor
Autor:
Profese:
E-mail: i
URL:
Phone:
Předmět:
Obsah příspěvku (i):

Kolikátý je den v měsíci ? (číslovkou bez tečky)