Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Tode 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
-
Hi,
hilft dir eventuell das weiter?
count& = notesRichTextRange.FindAndReplace( target$ , replacement$ , [ options& ] )
Axel
-
hast du die Möglichkeit, auf Java zurückzugreifen? Da sollte das ein Kinderspiel sein, da du RegEx verwenden kannst.
-
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
-
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 (http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnclinic/html/scripting051099.asp) weiterhelfen
-
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