Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: gfunkus am 31.08.04 - 10:50:55
-
Hallo,
Kennt ihr eine Funktion (LS) mit der es möglich ist einen string nach einem bestimmten Zeichen zu suchen und dieses Zeichen zu entfernen? Sicher wäre das mit einem left und ner schleife possible aber evtl. gibt es dafür ne Funktion???
-
Es geht einfach mit @ReplaceSubstring, dass mit Evaluate aufgerufen wird.
Andreas
-
und wie übergibt man den gesäuberten string wieder zurück???
scheint irgendwie nicht zu klappen...
Dim teststring As String
Dim tmpstring As String
Dim eval As Variant
teststring = "Test/WORT"
tmpstring = teststring
searchstring = "/"
myblank = ""
eval = Evaluate("@replacesubstring(tmpstring; searchstring;myblank)", doc)
und jetzt würde ich den tmpstring gerne weiterverarbeiten.
aber ein:
msgbox tmpstring
gibt mir den Ursprungswert zurück???
-
Schau mal spassenshalber in eval nach ;D
Gib' auch der DesignerHelp eine Chance ...
Bernhard
-
Haha! Hab ich schon gedebugt... eval ist blank!
Die Hilfe habe ich schon was länger offen... :-(
-
Jo, das Problem liegt an Deinem Evaluate: Du übergibst ja hier an @ReplaceSubstring die Feldnamen tmpstring und searchstring, und die sucht es jetzt in deinem Dokument doc.
Du musst also den Inhalt der beiden Variablen übergeben. Gleiches gilt für myblank.
HTH,
Bernhard
-
"@replacesubstring(tmpstring; searchstring;myblank)"
das ist falsch.
du kombinierst hier Konstanten (@ReplaceSubstring) mit variablen Werten (tmpstring) nicht richtig. Du darfst sie nicht einfach aneinander reihen, sondern musst sie mit dem Operator & verknüpfen.
-
So:
Dim teststring As String
Dim tmpstring As String
Dim eval As Variant
teststring = "Test/WORT"
tmpstring = teststring
searchstring = "/"
myblank = ""
eval = Evaluate( |@replacesubstring("| + tmpstring + |"; "| + searchstring + |";"| + myblank + |")| )
msgbox eval(0)
Das doc brauchst Du in diesem Fall gar nicht.
Andreas
-
Cool. Danke. Das hat geholfen.
Vielen Dank! ;D
-
Gibt es Merkwürdigkeiten bei Evaluate, hilft es meist, wenn man sich den (ja immer kompliziert aufgebauten @function-)String in eine Variable schreibt und mit einer Massagebox anzeigen lässt und dann darüber nachdenkt, was damit die "normale" Formelsprache anfangen würde.
Mir geht es jedenfalls so :)
Bernhard
-
Bitte Jungs schaut doch mal bei den String Funktionen in der Online Hilfe nach. für den Replacesubstring gibt es da schon seit längerem eine eigene Funktion, die sich Replace nennt und ohne den ganzen Evaluate Schnickschnack auskommt.
Thomas ::)
-
Also meinen function funktioniert soweit.
Aber wie kann ich " oder \ ersetzen?
Sub filteradr (filtername As String)
Dim tmpstring2 As String
Dim s As New NotesSession
Dim eval As Variant
tmpstring2 =filtername
'Durchsuche String nach illegalen Zeichen ("/ \ : * ? " | < >"
Dim searchstring As String
myblank =""
For i = 0 To 7
Select Case i
Case 0 : searchstring = "/"
Case 1 : searchstring = ":"
Case 2 : searchstring = ":"
Case 3 : searchstring = "*"
Case 4 : searchstring = "?"
Case 5 : searchstring = "|"
Case 6 :searchstring = "<"
Case 7 :searchstring = ">"
End Select
eval = Evaluate( |@replacesubstring("| + tmpstring2 + |"; "| + searchstring + |";"| + myblank + |")| )
tmpstring2=eval(0)
Next i
filtername = tmpstring2
-
also ich weiss ja nicht... aber wenn Du ein wenig Ahnung von Formelsprache hättest, dann würdest Du Dich nicht so verkünsteln...
eine Formel, um alle von Dir gewünschten Zeichen zu ersetzen, wäre:
@ReplaceSubstring( tmpString ; "/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\"" ; "")
und in Script dann:
fromString = {"/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\""}
evalString = {@ReplaceSubstring("} & tmpString & {"; } & fromString & { ; "} & myblank & {")}
eval = Evaluate( evalString )
tmpString2 = eval( 0 )
Gruß
Tode
-
und welche stelle zieht das " (Gänsefüsschen) raus?
Weil scheint so nicht zu funzen... ???
In der Formelsprache bin ich in der Tat nicht sehr geübt. ;-)
-
Das wird so notiert: "\"" (wie es Tode gemacht hat.
Oder @Char (34)
Bernhard
-
jawohl... wieder ein Quereinsteiger, der glaubt bei Notes ohne Formelsprache und mit ein bisschen Script- Programmierung über die Runden zu kommen...
-ohne weiteren Kommentar-
Tode
-
Nun ja, das ist so nicht ganz richtig.
Ich habe schon Ahnung von Formelsprache, aber kenne halt nicht alle Kniffe und Tricks.(Aber für den CLP hats gereicht! ;-) ) Und vieles vergisst man halt einfach wenn man es nicht täglich anwendet. Ich entwickle hauptsächlich nur in LS. So genug entschuldigt und gerechtfertigt.
-
also ich weiss ja nicht... aber wenn Du ein wenig Ahnung von Formelsprache hättest, dann würdest Du Dich nicht so verkünsteln...
eine Formel, um alle von Dir gewünschten Zeichen zu ersetzen, wäre:
@ReplaceSubstring( tmpString ; "/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\"" ; "")
und in Script dann:
fromString = {"/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\""}
evalString = {@ReplaceSubstring("} & tmpString & {"; } & fromString & { ; "} & myblank & {")}
eval = Evaluate( evalString )
tmpString2 = eval( 0 )
Gruß
Tode
Bekomme Dabei diese Fehlermeldung sobald ein " im String ist.
Error 4044: Invalid formula (@ReplaceSubstring("ALBERT "STEFFENS""; "/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\"" ; ""))
Kann wer helfen?
-
es ist nicht verboten, das Gehirn einzuschalten...
Wie soll diese Formel wohl funktionieren:
@ReplaceSubstring( "ALBERT "STEFFENS""; "/" : "\\" : ":" : "*" : "?" : "|" : "<" : ">" : "\"" ; "")
das doppelte hochkomma in einer Formel ist das Text-Trennzeichen... wenn dieses nochmal in Deinem Text vorkommt, dann klappt das nicht... sollte Dein Text wirklich Albert "STEFFENS" sein, dann musst Du vorher die " maskieren (über vorgeschaltetes "\" )
Aber mal ganz abgesehen davon: Warum ignorierst Du eigentlich geflissentlich die "Korrekte" lösung von Thomas Schulte: es gibt auch in Script ein Replace, und dort musst Du Dich nicht mit Evaluate und dem richtigen zusammensetzen von Strings rumquälen...zumal Du Dich nach eingenen Angaben eh nicht mit Formel auskennst...
Tode
-
Habs jetzt mit der LS Function Replace gemacht. Funktioniert einwandfrei. Danke für eure Hilfe.
-
dann setz doch noch den Thread auf 'erledischt'...
ps: Formel ist "cooler and faster than" Script, aber Script macht mehr möglich ;D
-
Wie soll das gehen? Einen Thread auf erledigt setzten? Können das nicht nur Moderatoren?
-
Bei Deinem ersten Posting dieses Threads findest Du den entsprechenden Knopf.