Autor Thema: LotusScript: Replace nur für ganze Worte...  (Gelesen 1882 mal)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
LotusScript: Replace nur für ganze Worte...
« am: 18.08.05 - 16:33:21 »
Ich bin gerade dabei eine Website zu entwickeln, wo über LotusScript und Replace bestimmte Ausdrücke durch einen Link zu einem Glossar für diesen Ausdruck ersetzt werden.

Dafür verwende ich den replace- Befehl.

Dummerweise ersetzt der auch Wortteile.

Beispiel (sehr trivial): Die Leiter steht an der Tanne.

für das wörtchen "an" existiert ein Glossar- Eintrag.

Nach meinem replace sieht das so aus:

Die Leiter steht <link>an</link> der T<link>an</link>ne

iiiihhhhh...

Mein Ansatz wäre jetzt, die "erwünschten" Ersetzungen selbst zu basteln:

aus "an" wird dann: " an " : " an." : ".an " : " an," ........

ABER: 1. Das sind sauviele mögliche Kombinationen und
2. sind meine zu ersetzenden Werte sowieso schon in einem Array: das wäre der Performance nicht unbedingt zuträglich, wenn ich hier aus einem Array mit sagen wir mal 30 Werten eines mit 600 grösstenteils redundanten Werten machen würde...

Kennt jemand nen Befehl wie den Frontend- Befehl "Suchen und Ersetzen" mit der Option " Ganze Wörter" für's Script. Backend ?

Thanx
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: LotusScript: Replace nur für ganze Worte...
« Antwort #1 am: 18.08.05 - 16:39:55 »
Hi,

hilft dir eventuell das weiter?

count& = notesRichTextRange.FindAndReplace( target$ , replacement$ , [ options& ] )

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LotusScript: Replace nur für ganze Worte...
« Antwort #2 am: 18.08.05 - 16:51:31 »
hast du die Möglichkeit, auf Java zurückzugreifen? Da sollte das ein Kinderspiel sein, da du RegEx verwenden kannst.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LotusScript: Replace nur für ganze Worte...
« Antwort #3 am: 18.08.05 - 16:53:04 »
es ist in der Tat einfach:

The code looks like (using jregex, http://jregex.sourceforge.net)

import jregex.*;
...
String in="You seem to see what I mean";
String out=new Pattern("\\bsee\\b").replacer("know").replace(in);
System.out.println(out);
//->You seem to know what I mean
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LotusScript: Replace nur für ganze Worte...
« Antwort #4 am: 18.08.05 - 17:57:26 »
Hmm, wenn du auf LS angewiesen bist und das Script auf einem MS Rechner läuft, könnte dir evtl auch das VBScript.RegExp Objekt weiterhelfen
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: LotusScript: Replace nur für ganze Worte...
« Antwort #5 am: 19.08.05 - 14:54:26 »
Vielen Dank allen.

Leider kann ich auf die neuen Richtext- Klassen nicht zurückgreifen, weil sie es mir nicht erlauben (zumindest nach meinen bisherigen Erkenntnissen), dynamisch Text in Hotspots umzuwandeln.

Dazu habe ich mir einen anderen Weg ausgedacht (Umweg über XML- Export, find&replace im Quelltext und reimport).

@Thomas:
Das Regexp- Objekt scheint ganz nützlich zu sein, habe aber gerade keine Zeit mich näher damit zu befassen. Ich habe für mich jetzt eine andere Lösung gefunden:

3 Schritte:

1. Ersetze alle möglichen "Wort-End-Zeichen" durch sich selbst, eingebettet in Leerzeichen.
Bsp: 
"." >> " . "

2. Ersetze die Suchworte -ebenfalls eingebettet in Leerzeichen- durch die entsprechenden Links:
Bsp:
" Test " >> " <link>Test</link> "

3. Ersetze die eingebetteten Wort- End- Zeichen wieder durch Ihre "Pendants"
Bsp:
" . " >> "."


Das funktioniert so weit.

Wenn jemand noch ein grosses "nono" sieht, dann bitte sagen, ansonsten Danke für die Unterstützung.

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz