FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Frank_Huber am 04 Mai 2021, 10:32:34

Titel: Ergebnis von split auf Nummern begrenzen.
Beitrag von: Frank_Huber am 04 Mai 2021, 10:32:34
Moin Moin,

Ich zerlege einen String per Split. String: "Lamp 1: off (6 hours)"
{(split " ","Lamp 1: off (666 hours)")[3]} gibt mir als Ergebnis (666 aus.

Es gibt doch hier bestimmt einen einfachen Weg das auf die numerische "666" zu begrenzen?

Danke & Grüße
Frank
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: TomLee am 04 Mai 2021, 10:59:48
Sry, denke das war Blödsinn, chop entfernt normal das letzte Zeichen, keine Ahnung warum das geklappt hat.

So wärs eine Möglichkeit die auf jedenfall korrekt umgesetzt wäre:
{my $v=(split " ","Lamp 1: off (6 hours)")[3];;$v =~ s/^.//;;return $v;;}
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: Frank_Huber am 04 Mai 2021, 11:05:36
Danke!
Hab mich schon gewundert wo die Antwort hin ist. :-)
das chop hat funktioniert um aus "(6" "6" zu machen. aus "(666" wurde aber auch nur "6"
Das mit dem RegEx jetzt funktioniert. :-)
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: DeeSPe am 04 Mai 2021, 11:24:34
Hier noch eine andere Lösung:
{my $v="Lamp 1: off (6 hours)";;return $v=~/^.+\((\d+)\shours\)$/?$1:""}

Gruß
Dan
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: Otto123 am 04 Mai 2021, 12:13:00
Einen hab ich auch :) für den Fall das es am Ende wirklich nur darum geht das erste Zeichen weg zu hacken und es ums Wort und nicht um numerisch gehen sollte:
{my $v=(split " ","Lamp 1: off (6 hours)")[3];;substr $v,1}
Gruß Otto
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: TomLee am 04 Mai 2021, 12:18:25
Kannst du eine Doku verlinken in der man sich zu dem ,1 einlesen kann, meine hab ich bisher noch nicht gelesen gehabt .
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: Otto123 am 04 Mai 2021, 12:20:54
Hier https://perldoc.perl.org/functions/substr

Die Beispiele zeigen: es geht auch von hinten :)
Titel: Antw:Ergebnis von split auf Nummern begrenzen.
Beitrag von: TomLee am 04 Mai 2021, 12:35:21
Ups, wollte das substr nicht sehen, weil du die Klammern weggelassen hast (hatt ich ein return beim überlesen angenommen ). An substr dacht ich erst, aber zu doof gewesen um auf die einfachste Variante zu kommen nur die Startposition anzugeben  ::)