Domino 9 und frühere Versionen > Entwicklung

Textlisten vergleichen

(1/1)

tabama:
Hallo,
probier jetzt schon Stunden an einem Problem rum und komme nicht weiter.

Ich habe zwei Textlisten und möchte eine Dritte, welche Werte der Liste 1 enthällt, die aber nicht in Liste 2 sind

Beispiel:
Liste 1 = "Montag":"Dienstag":"Mittwoch":"Donnerstag"
Liste 2 = "Dienstag":"Mittwoch"
Ergebnis: "Montag":"Donnerstag"

Am liebsten wäre mir das Ganze als Script, nicht als @

Geht das evtl. mit "permuted"? Finde dazu aber keine (für mich verständliche) Erläuterung

Gandhi:
Function schnittmenge(a as variant, b as variant) as variant
dim c as variant
c(0)=""
dim i as integer
dim p as integer
dim contained as variant
for i=0 to UBound(a)
   contained=false
   for p=0 to UBound(b)
      if b(p)=a(i) then
         contained=true
         exit for
      end if
    next 'p
    if not contained then
         c=arrayappend(c, cvar(a(i)))
    end if
next 'i
schnittmenge=fulltrim(c) 'hiermit wird der Leereintrag entfernt
end function

Gandhi:
Oder noch viel einfacher
dim c (Ubound(b)) as string
for i=0 to Ubound(c)
c(i)=""
next

schnittmenge=fulltrim(ArrayReplace( a, b, replaceArray ))

tabama:
Hallo,

weiß zwar noch nicht so ganz wie, aber es funktioniert (2.Variante)

Hatte zunächst Problem mit dem Ubound bei dim c. Habe das dann ganz einfach durch eine Zahl ersetzt. Danach habe ich mir überlegt für was c überhaupt gebraucht wird und keine Erklärung gefunden. Daraufhin habe ich es weggelassen und es geht auch

Also:
schnittmenge = FullTrim(ArrayReplace(a,b,ReplaceArray)) genügt.

Gandhi:
Mit Option declare müsstest Du es erst dimensionieren - daher die Zeilen.
Dass ArrayReplace so schmerzfrei ist und auch einen leeren Array nimmt - ist schön - damit hätte ich aber nicht gerechnet.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln