Hallo,
möchte eine Liste sortieren, und doppelte Elemente entfernen. Die komplette Zeile ist identisch, wenn die ersten 40 Zeichen identisch sind und die sollen entfernt werden.
Inhalt der Liste, hier sind z.B. die ersten 40 Zeichen, der Zeile 1 und der Zeile 4 sind gleich, eines davon soll weg
<Artikelnr>123456></Artikelnr><Ek-Preis>30</Ek-Preis>
<Artikelnr>123457></Artikelnr><Ek-Preis>50</Ek-Preis>
<Artikelnr>123458></Artikelnr><Ek-Preis>60</Ek-Preis>
<Artikelnr>123456></Artikelnr><Ek-Preis>50</Ek-Preis>
<Artikelnr>123459></Artikelnr><Ek-Preis>40</Ek-Preis>
<Artikelnr>123458></Artikelnr><Ek-Preis>90</Ek-Preis>
Wie kann das mit AHK umsetzen?
Danke schon mal für Antworten.
Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind Topic is solved
Moderator: jNizM
Re: Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind
Hi,
wenn sich dieser gesamte Block in einer Variable befindet,
könntest du ihn mittels Loop, parse, Zeichenkette, `n, `r in einzelne Zeilen aufteilen.
Anschließend dann SubStr(), um nur die ersten 40 Zeichen zu erhalten
SubStr(A_LoopField, 1, 40) ; gibt die ersten 40 Zeichen zurück
(Die könntest du dann neuen Variablen zuweisen)
Wie du dann schnell und einfach die doppelten löschen kannst, weiß ich gerade nicht.
Sicherlich können da RegExReplace oder RegExMatch helfen, aber da endet leider mein Support.
P.S.
Loop parse und SubStr() waren auch nur eine Idee, die mir spontan einfiel.
Grüße
wenn sich dieser gesamte Block in einer Variable befindet,
könntest du ihn mittels Loop, parse, Zeichenkette, `n, `r in einzelne Zeilen aufteilen.
Anschließend dann SubStr(), um nur die ersten 40 Zeichen zu erhalten
SubStr(A_LoopField, 1, 40) ; gibt die ersten 40 Zeichen zurück
(Die könntest du dann neuen Variablen zuweisen)
Wie du dann schnell und einfach die doppelten löschen kannst, weiß ich gerade nicht.
Sicherlich können da RegExReplace oder RegExMatch helfen, aber da endet leider mein Support.
P.S.
Loop parse und SubStr() waren auch nur eine Idee, die mir spontan einfiel.
Grüße
Please use [code][/code] when posting code!
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
Re: Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind Topic is solved
Du könntest die einzelnen Zeilen in ein Objekt schreiben und die ersten 40 Zeichen als key verwenden. Danach musst du es nur mit einem for-Loop auslesen und es ist sortiert und die doppelten entfernt.
Code: Select all
elemente := [] ;object für deine Daten
Loop, Parse, Zeichenkette, `n, `r
{
elemente[subStr(A_LoopField,1,40)] := A_LoopField
}
output := ""
For each, element in elemente {
output .= element . "`n"
}
Msgbox % output
Recommends AHK Studio
Re: Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind
Moin,
bist Du sicher, dass das immer die ersten 40 Stellen sein sollen?
Die ersten 40 Stellen der ersten Zeile Deines Beispiels sind z.B.:
Die einzige Variable ist die Artikelnummer. Die muss immer 6-stellig sein, wenn das funktionieren soll. Die übrigen 34 Stellen enthalten immer denselben Text. Ist das so?
bist Du sicher, dass das immer die ersten 40 Stellen sein sollen?
Die ersten 40 Stellen der ersten Zeile Deines Beispiels sind z.B.:
Code: Select all
<Artikelnr>123456></Artikelnr><Ek-Preis>
Re: Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind
Guten Morgen und danke für eure Antworten,
Ja, das ist korrekt.Die einzige Variable ist die Artikelnummer. Die muss immer 6-stellig sein, wenn das funktionieren soll. Die übrigen 34 Stellen enthalten immer denselben Text. Ist das so?
Re: Elemente sind doppelt, wenn die ersten 40 Zeichen identisch sind
Dann würde es eventuell Sinn machen ide xml Daten korrekt zu parsen - siehe z.B. ein COM Object um xml richtig einzulesen.
Recommends AHK Studio
Who is online
Users browsing this forum: No registered users and 64 guests