Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: gfunkus am 31.08.04 - 10:50:55

Titel: Funktion um String zu säubern??? :-)
Beitrag 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???


Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Glombi am 31.08.04 - 10:55:06
Es geht einfach mit @ReplaceSubstring, dass mit Evaluate aufgerufen wird.

Andreas
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 31.08.04 - 12:48:58
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???
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: koehlerbv am 31.08.04 - 12:55:35
Schau mal spassenshalber in eval nach  ;D

Gib' auch der DesignerHelp eine Chance ...

Bernhard
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 31.08.04 - 13:00:35
Haha! Hab ich schon gedebugt... eval ist blank!
Die Hilfe habe ich schon was länger offen... :-(
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: koehlerbv am 31.08.04 - 13:07:56
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: animate am 31.08.04 - 13:11:30
"@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.
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Glombi am 31.08.04 - 13:21:04
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 31.08.04 - 15:00:12
Cool. Danke. Das hat geholfen.

Vielen Dank! ;D
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: koehlerbv am 31.08.04 - 15:06:41
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Thomas Schulte am 31.08.04 - 18:10:28
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 ::)
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 01.09.04 - 13:12:38
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Tode am 01.09.04 - 13:24:49
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 01.09.04 - 13:52:15
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. ;-)
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: koehlerbv am 01.09.04 - 13:55:08
Das wird so notiert: "\"" (wie es Tode gemacht hat.
Oder @Char (34)

Bernhard
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Tode am 01.09.04 - 14:42:23
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 03.09.04 - 09:09:12
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.
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 03.09.04 - 09:59:02
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?
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: Tode am 03.09.04 - 10:20:44
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
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 03.09.04 - 12:56:21
Habs jetzt mit der LS Function Replace gemacht. Funktioniert einwandfrei. Danke für eure Hilfe.
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: y20frank am 03.09.04 - 20:38:42
dann setz doch noch den Thread auf 'erledischt'...

ps: Formel ist "cooler and faster than" Script, aber Script macht mehr möglich  ;D
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: gfunkus am 07.09.04 - 08:13:14
Wie soll das gehen? Einen Thread auf erledigt setzten? Können das nicht nur Moderatoren?
Titel: Re:Funktion um String zu säubern??? :-)
Beitrag von: koehlerbv am 07.09.04 - 09:10:42
Bei Deinem ersten Posting dieses Threads findest Du den entsprechenden Knopf.