Seite 1 von 1

Stringvariableninhalt systematisch ändern

BeitragVerfasst: Fr 17. Jan 2014, 17:27
von Tonttu
Moin

Ich habe einen Datensatz mit einem kleinen Problem: eine Variable enthält zwei Daten, eine Nummer und jeweils einen Namen, Informationen die eigentlich auf zwei Variablen verteilt sein sollten. Auf den Namen kann ich verzichten, versuche also nur die Nummer zu extrahieren, wobei wenn beides möglich wäre hätte ich auch nichts dagegen. Beispiel von den Daten ist: " 283 Quecksilber Konzentrat"
Habe mich mit verschiedensten Methoden mit "replace" versucht und ein bisschen eleganter mit "subinstr" zusammen mit "strpos". Das Problem ist, dass vor den Zahlen eine unterschiedliche Anzahl an Leerzeichen vorhanden ist, heisst feststellen wo Leerzeichen ist und ab dort löschen funktioniert nicht, ebenfalls nicht erste Zeichen zu löschen damit die Zahl tatsächlich am Anfang steht.

Einzige Lösung die mir jetzt noch in den Sinn kommt ist mit "subinstr" alle Buchstaben (sowohl Klein- als Grossgeschrieben), sowie Sonderzeichen (Klammern) einzeln zu löschen. Um das elegant zu lösen habe ich mich mit "foreach" auseinandergesetzt, bin aber auch nicht auf einen grünen Zweig gekommen. Und die Idee alles ausser den Zahlen zu löschen, hat auch nicht geklappt (evtl. habe ich einen Fehler im Befehl?): replace Var = subinstr(Var,!="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0","",.)

Gibt es eine Möglichkeit, wie das Ganze einigermassen elegant und vA auch sicher lösen kann (Zeichen einzeln löschen ist schliesslich auch Fehleranfällg)?

Vielen Dank für jede Hilfe!

Re: Stringvariableninhalt systematisch ändern

BeitragVerfasst: Fr 17. Jan 2014, 18:32
von daniel
Ja. Nennen wir Deine Originalvariable "badstrvar". Wie wäre es mit

Code: Alles auswählen
// create clean version of badstr
g clean = trim(itrim(badstrvar))

// now get the number
g number = word(clean, 1)

// get the rest
g rest = substr(clean, strpos(clean, " "), .)


Du könntest alternativ auch mit -split- arbeiten.

Re: Stringvariableninhalt systematisch ändern

BeitragVerfasst: Mo 20. Jan 2014, 14:03
von Tonttu
Vielen Dank! Klappt so wunderbar :)