Autor Thema: Ergebnis von split auf Nummern begrenzen.  (Gelesen 179 mal)

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4315
Ergebnis von split auf Nummern begrenzen.
« 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
« Letzte Änderung: 04 Mai 2021, 10:57:00 von Frank_Huber »

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3196
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #1 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;;}
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4315
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #2 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. :-)

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4354
  • Wer anderen eine Bratwurst brät...
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #3 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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 18748
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #4 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
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3196
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #5 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 .

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 18748
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #6 am: 04 Mai 2021, 12:20:54 »
Hier https://perldoc.perl.org/functions/substr

Die Beispiele zeigen: es geht auch von hinten :)
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 3196
Antw:Ergebnis von split auf Nummern begrenzen.
« Antwort #7 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  ::)
« Letzte Änderung: 04 Mai 2021, 18:29:52 von TomLee »