FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: Nobby1805 am 04 November 2020, 17:18:25

Titel: Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: Nobby1805 am 04 November 2020, 17:18:25
Hallo,
für eine Umwandlung einer Zahl bei eine data-type label verwende ich ein data-substitution um Tausendertrennung einzufügen.
den regex-String s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g habe ich irgendwo, evt. sogar hier im Forum, gefunden und geklaut  8)

Jetzt kommt mein Problem: das ursprüngliche Reading hat normalerweise eine Nachkommastelle, die aber mit 10% Wahrscheinlichkeit Null ist und dann weggelassen ist :( ich habe schon diverse Versuche gemacht den regex zu erweitern, kriege es aber nicht hin.

Wer kann mir helfen?

Danke schon einmal, Nobby
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: betateilchen am 04 November 2020, 17:42:31
Das ist doch ein Thema, das sich über die localize Funktionen von perl lösen lassen muss und nicht per regex?
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: Nobby1805 am 04 November 2020, 17:48:06
Jetzt hast du das eine ? in meinem Kopf durch ein anderes ersetzt ::)  :-[
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: MKeY am 04 November 2020, 18:39:00
ich steh n bissl aufm Schlauch, kannst du mal 2-3 Beispiele bringen?  ^^
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: Nobby1805 am 04 November 2020, 19:59:28
Meinst du solche Beispiele?
123456.7 wird durch Substitution 123,456.7
1234567 wird 1,234,567 soll aber 1,234,567.0 sein

Damit die Werte in einer Tabelle schöner untereinander stehen
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: Nobby1805 am 02 Januar 2022, 12:15:55
Da ich mich heute wieder über die Darstellung geärgert habe und dann beim googeln meinen eigenen post gefunden habe ...

Kann mir da niemand helfen?

PS allen die besten Wünsche für ein gesundes Jahr 2022 !!
Titel: Antw:Hilfe, wie kann man regex für Substitution erweitern
Beitrag von: yersinia am 02 Januar 2022, 19:58:02
Für ein tausender-Trennzeichen und das ersetzen des Dezimalpunkts durch ein -komma nutze ich diese sub in der myutils:
sub tausender {
  my $zahl = shift;
  my $text = reverse $zahl;
  $text =~ s/\./\,/g;  #replace decimal point by decimal comma
  $text =~ s/(\d\d\d)(?=\d)(?!\d*\,)/$1./g;
  return scalar reverse $text;
}

Für feste Nachkommastellen kannst du zB sprintf (https://perldoc.perl.org/functions/sprintf) nutzen:
sprintf("%.1f", $number);

Das ganze kann man zusammen aufrufen:
tausender(sprintf("%.1f", ReadingsNum(device,reading,0)))



Edit: ich lese gerade, dass es um FTUI geht. Mein Vorschlag kann dann nur mit einem userReading in FHEM funktionieren.