Autor Thema: @Explode an String "+AND+"  (Gelesen 3560 mal)

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Geschlecht: Männlich
@Explode an String "+AND+"
« 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!
« Letzte Änderung: 12.05.17 - 14:26:03 von Christian Kröll »
Christian Kröll

Online Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #1 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;"@");



Offline Ottmar

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #2 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)

Offline Ottmar

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #3 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.

Online Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #4 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>

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #5 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!
Christian Kröll

Online Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @Explode an String "+AND+"
« Antwort #6 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"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz