Domino 9 und frühere Versionen > ND9: Entwicklung

@Explode an String "+AND+"

(1/2) > >>

Christian Kröll:
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
--- Ende Code ---

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
--- Ende Code ---

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!

Peter Klett:
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;"@");

--- Ende Code ---


Ottmar:
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)

Ottmar:
Ups, Schnellschuss, Mia Culpa, Meine Lösung funktioniert zwar auch, meine Kommentierung bitte ignorieren, Peter hat natürlich völlig recht.

Peter Klett:

--- Zitat 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.

--- Ende Zitat ---

<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>

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln