Forums Neueste Beiträge
 

Dubletten entfernen/Erweiterung

21/07/2009 - 15:41 von Hans List | Report spam
Hallo Leute,

Wolfram hat für mich vor einiger Zeit diese Funktion geschrieben:

Function unify1(line As String) As String
Dim lineAry, clrAry
Dim clr
Dim clrs As New Scripting.Dictionary

clrs.RemoveAll
lineAry = Split(line, vbTab)
clrAry = Split(lineAry(1), "|")

For Each clr In clrAry
If Not clrs.Exists(LCase(clr)) Then
clrs.Add LCase(clr), clr
End If
Next clr

lineAry(1) = Join(clrs.Items, "|")
unify1 = Join(lineAry, vbTab)
End Function

Damit kann ich aus Dateien mit der Struktur:

<Suchbegriff><Tab><Entsprechung1>|<Entsprechung2>|<Entsprechung3>...

alle doppelten Entsprechungen nach dem Tabulator blitzschnell
entfernen.

Das Makro funktioniert wunderbar.

Aus:
Gemüse<Tab>Spinazie|wortel|spinazie|wortel|spinazie|tomaat
Obst<Tab>Banaan|appel|banaan

Wird dann:
Gemüse<Tab>Spinazie|wortel|tomaat
Obst<Tab>Banaan|appel

Ich muss gestehen, dass ich seine Wirkung nie wirklich durchschaut
habe. Deshalb klappt mir auch folgende Erweiterung nicht:

Entferne alle Entsprechungen nach dem Tabulator, die (case
insensitive) auch in einer anderen Entsprechung vorkommen.

Aus:

Getrànk<Tab>bier|melk|bier met grenadine|chocolademelk|oud bier|
bokbier|karnemelk


Wird dann:
Getrànk<Tab>bier|melk

(Die Kontrolle sollte sofort nach dem Tabulator anfangen. Die
Zeichenkette 'bier' kommt in 'bier met grenadine', 'oud bier' und
'bokbier' vor.)

Wer kann mir bitte bei der Lösung dieses Ràtsels behilflich sein?

Recht herzlichen Dank!

Hans
 

Lesen sie die antworten

#1 Wolfram Jahn
21/07/2009 - 21:20 | Warnen spam
Hans List schrieb:

Entferne alle Entsprechungen nach dem Tabulator, die (case
insensitive) auch in einer anderen Entsprechung vorkommen.

Aus:

Getrànk<Tab>bier|melk|bier met grenadine|chocolademelk|oud bier|
bokbier|karnemelk


Wird dann:
Getrànk<Tab>bier|melk

(Die Kontrolle sollte sofort nach dem Tabulator anfangen. Die
Zeichenkette 'bier' kommt in 'bier met grenadine', 'oud bier' und
'bokbier' vor.)



Ist sichergestellt, dass die jeweils einfachste Form zuerst kommt, oder
ist das beliebig zu lösen?

Soll nur die einfachste Form übrig bleiben, oder ist das egal? Im Text
beschreibst Du es anders, als es im Beispiel steht. Im Text am Anfang
klingt es so, als ob bier und melk verschwinden müssten.

Zumindest diese Angaben bràuchte ich.


Wolfram

Ähnliche fragen