Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Caleb666 am 11.08.15 - 16:39:46

Titel: Letzten Wert aus Textliste löschen
Beitrag von: Caleb666 am 11.08.15 - 16:39:46
Hallo,

ich möchte gerne aus einem Feld "Feld1" (Textliste mit Mehrfachwerten) den letzen Eintrag löschen.

Inhalt "Feld1"
"Apfel"
"Birne"
"Ananas"
"Apfel"


Es soll jedoch nur der letzte Wert "Apfel" gelöscht werden.

Mit ReplaceSubstring werden ja alle Einträge mit dem Inhalt "Apfel" gelöscht:
Code
@SetField("Feld1_Neu";@Trim(@ReplaceSubstring(Feld1;@Subset(Feld1; -1);"")))

Wie muss ich die Formel umbauen, damit lediglich der letzte Eintrag aus der Textliste gelöscht wird?

Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Peter Klett am 11.08.15 - 16:49:02
Probier mal (so aus dem Bauch)

@SetField("Feld1_Neu";@If (@Elements (Feld1) = 1; ""; @Subset (Feld1; @Elements (Feld1)-1)))
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Peter Klett am 11.08.15 - 16:52:11
@ReplaceSubstring ist sowieso der falsche Befehl, denn der haut Dir bei "Apfeltasche" auch den "Apfel" weg, bleibt dann nur noch die "tasche". @Replace wäre wohl passender
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: gstueb am 11.08.15 - 16:58:46
Hallo,

eine weitere Möglichkeit bestünde darin, die Textliste per @Implode(list ; separator) in einen String mit einem Separator umzuwandeln, der in den Texten definitiv nicht vorkommt, dann den letzten Teil vom String abzuschneiden und den String per @Explode wieder in eine Liste umzuwandeln.

Grüße,
Gregor
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Tim Pistor am 11.08.15 - 17:49:28
Ich mag ja Formel-Rätsel ;)

Noch etwas kürzer als Peters Vorschlag: @Trim(@Subset( "" : liste; @Elements( liste )  ));
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Thomas Schulte am 11.08.15 - 20:11:05
Tims Lösung ist so richtig schön ..... elegant.
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: pram am 11.08.15 - 22:58:21
Anstatt @Elements muss man aber @Count verwenden, das macht die Formel nebenbei noch kürzer (von 42 auf 39) ;D und sie kommt auch damit klar, wenn Liste := @Unavailable. 

Ohne Trim hätte ich noch folgenden Vorschlag (42 Zeichen)
Code
@ifError(@Subset($:=Liste;@Count($)-1);_);

Und durch die Verwendung von Variablen lassen sich auch bei Tims Lösung noch ein paar Zeichen sparen
Code
@Trim(@Subset($:$:=liste;@Count($)));
Die Formel (37 Zeichen) versteht jetzt aber keiner mehr   ::) ::)

Gruß
Roland
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Tim Pistor am 12.08.15 - 08:47:24
Code
@Trim(@Subset($:$:=liste;@Count($)));

 ;D sehr schön
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Caleb666 am 12.08.15 - 10:21:41
Wow, danke für die vielen Lösungen.
Da hat man die Qual der Wahl... ;D
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: thkn777 am 12.08.15 - 15:47:18
@Caleb666
Falls der Fall eintreten kann, daß in der Ausgangsliste auch Leer-Elemente enthalten sind, braucht man eine Lösung ohne @Trim (siehe pram's Vorschlag) oder so etwas z.B.

@For(x:=1; x<Feld2Anzahl; x:=x+1; res := @If(x=1;Feld2

mit Feld2Anzahl := @Elements(Feld2) und Feld2 ist die Ausgangsliste.

Sorry, wollte einfach nochmal sicherstellen, daß Du dir diesen Fall genau überlegst, bevor Du die für Dich passende Lösung auswählst.
Titel: Re: Letzten Wert aus Textliste löschen
Beitrag von: Glombi am 13.08.15 - 09:39:47
Die Erweiterung von Tims Formel ohne @Trim sähe dann so aus:

@Subset(@Subset("":liste;@Elements(liste);1-@Elements(liste))

Andreas