Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Christian Kröll am 12.05.17 - 13:44:40

Titel: @Explode an String "+AND+"
Beitrag von: Christian Kröll am 12.05.17 - 13:44:40
Hallo zusammen,

aus einer URL muß ich einen SearchString auswerten und den String an den Stellen "+AND+" in eine Liste zerlegen. Mit @Explode(text;"+AND+") kein Problem.
Wenn in meinem String aber "=N" vorkommt, so erkennt @Explode dies anscheinend als ein "+AND+".
Zum Test könnt Ihr in einem Berechneten Text folgendes Beispiel hinterlegen. Mit der Version 1 kein Problem

Beispiel1 :
Code
_text := "Klasse=Vögel+AND+Ordnung=Greifvögel+AND+Gattung=Steinadler";
_text := @Explode(_text;"+AND+");
@For(n := 1;
n <= @Elements(_text);
n := n + 1;
_result := _result + _text[n] + @NewLine
);
_result

Beispiel2: (mit =N)
Code
_text := "Klasse=Vögel+AND+Ordnung=Nreifvögel+AND+Gattung=Nteinadler";
_text := @Explode(_text;"+AND+");
@For(n := 1;
n <= @Elements(_text);
n := n + 1;
_result := _result + _text[n] + @NewLine
);
_result

Könnt Ihr mir den Fehler bestätigen oder möglicherweise den Hintergrund erklären? Bedeutet vielleicht in einer mir nicht bekannten Sprache
=N dasselbe wie  "+AND+"

Vielen lieben Dank schonmal!
Titel: Re: @Explode an String "+AND+"
Beitrag von: Peter Klett am 12.05.17 - 13:51:02
Das Beispiel steht fast wörtlich so in der Hilfe. Ein @Explode mit "and" trennt nach a, n und d, bei Dir als nach +, A, N und D.

Du solltest +AND+ durch ein einzelnes Trennzeichen ersetzen, das definitiv nicht vorkommt und darüber explodieren

Code
_text := @ReplaceSubstring ("Klasse=Vögel+AND+Ordnung=Nreifvögel+AND+Gattung=Nteinadler"; "+AND+"; "@");
_text := @Explode(_text;"@");


Titel: Re: @Explode an String "+AND+"
Beitrag von: Ottmar am 12.05.17 - 13:57:19
Der Fehler ist mir auch neu, ich habs gerade probiert, ist bei mir aber auch so.
Ob der Workarround mit @ReplaceSubstring funktioniert, weiss ich nicht, möglicherweise transferiert er auch "=N" ind "@"

Diese Variante funktioniert aber, hab's gerade probiert...

_text := "Klasse=Vögel+AND+Ordnung=Nreifvögel+AND+Gattung=Nteinadler";
_text := @Explode(_text;"+");
@For(n := 1;
n <= @Elements(_text);
n := n + 1;
_result := _result + @If(@LowerCase(_text[n]) = "and"; ""; _text[n] + @NewLine)
);
@Prompt([OK]; "Test"; _result)
Titel: Re: @Explode an String "+AND+"
Beitrag von: Ottmar am 12.05.17 - 14:00:52
Ups, Schnellschuss, Mia Culpa, Meine Lösung funktioniert zwar auch, meine Kommentierung bitte ignorieren, Peter hat natürlich völlig recht.
Titel: Re: @Explode an String "+AND+"
Beitrag von: Peter Klett am 12.05.17 - 14:14:33
Ups, Schnellschuss, Mia Culpa, Meine Lösung funktioniert zwar auch, meine Kommentierung bitte ignorieren, Peter hat natürlich völlig recht.

<OT>
Deine Lösung ist aber nicht international einsetzbar, denn "and" ist norwegisch und heißt "Ente", und ist damit ein gültiger Wert in Christians Textliste, zumindest bei uns ... ;)
</OT>
Titel: Re: @Explode an String "+AND+"
Beitrag von: Christian Kröll am 12.05.17 - 14:30:30
Vielen Dank Euch!

Die Lösung mit @ReplaceSubstring hatte ich bereits implementiert, allerdings hatte ich nicht kapiert, dass ein "+" mit folgender Zeichenkette zu dem Ergebnis führt. Wieder was gelernt :-)

Eine riesen Bitte: Könntet ihr bitte das Thema ins "ND9 Entwicklung"-Forum schieben.

Euch ein schönes Wochenende!
Titel: Re: @Explode an String "+AND+"
Beitrag von: Peter Klett am 12.05.17 - 14:39:03
Das hat nichts mit dem + zu tun. Jedes Zeichen, das in dem String für den Separator angegeben ist, ist für sich alleine ein Trennzeichen.

@Explode ("abcdefg"; "fdb") -> "a" : "c" : "e" : "g"