Zeilenumbruch in String - wie entfernen?

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Zeilenumbruch in String - wie entfernen?

Beitrag von duffy6 » 26.11.2020, 20:20

Hallo zusammen.

Folgender Code gibt mir immer zwischen Zahl und Einheit einen Zeilenumbruch.
Wie bekomme ich denn diesen weg?

Code: Alles auswählen

string message1 = "Max. Temp: "#max.ToString(2)#"°C"; 
Ist-Zustand:
4.0
°C

Soll-Zustand:
4.0°C


Ich kriegs einfach nicht hin :shock:

Gruß
duffy6
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

Benutzeravatar
Roland M.
Beiträge: 9720
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1351 Mal

Re: Zeilenumbruch in String - wie entfernen?

Beitrag von Roland M. » 26.11.2020, 20:30

Hallo!

Bin selbst absolut kein Script-Experte, aber ich würde mir Gedanken machen, wie der Zeilenumbruch überhaupt in die Variable kommt!

Ansonsten würde ich es versuchen mit

Code: Alles auswählen

message1 = message1.Subst("\n","");

Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Re: Zeilenumbruch in String - wie entfernen?

Beitrag von duffy6 » 26.11.2020, 21:33

Ich habs jetzt mit

Code: Alles auswählen

message1 = message1.Replace("\n","");
hingekriegt.


Allerdings habe ich jetzt ein anderes Problem.
Eine Variable will ich gekürzt darstellen auf 2 Nachkommastellen mit:

Code: Alles auswählen

string message1 = "Avg. Temp: "#avg.ToString(2)#" °C ";
Allerdings wird dieser Wert immer mit allen Nachkommastellen ausgegeben?
Wie schaffe ich es denn diesen Wert auf 2 Nachkommastellen zu runden?

Background:
Der Wert kommt aus CCU.Historian mittels:

Code: Alles auswählen

string avg;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=avg'", &avg);
WriteLine(avg.ToFloat());
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

Benutzeravatar
Baxxy
Beiträge: 10605
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 594 Mal
Danksagung erhalten: 2173 Mal

Re: Zeilenumbruch in String - wie entfernen?

Beitrag von Baxxy » 26.11.2020, 21:57

duffy6 hat geschrieben:
26.11.2020, 21:33
Ich habs jetzt mit

Code: Alles auswählen

message1 = message1.Replace("\n","");
hingekriegt.
statt .Replace kann man einfach .Trim verwenden.

Code: Alles auswählen

string message1 = "Max. Temp: "#max.Trim().ToString(2)#"°C";
duffy6 hat geschrieben:
26.11.2020, 21:33
Eine Variable will ich gekürzt darstellen auf 2 Nachkommastellen mit:
Es gibt auch hier wieder mehrere Wege...
z.B:

Code: Alles auswählen

string avg;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=avg'", &avg);
WriteLine("Avg: " #avg.Trim().ToString(2)#" Einheit");

Benutzeravatar
Roland M.
Beiträge: 9720
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1351 Mal

Re: Zeilenumbruch in String - wie entfernen?

Beitrag von Roland M. » 26.11.2020, 22:52

Hallo!
Roland M. hat geschrieben:
26.11.2020, 20:30
Bin selbst absolut kein Script-Experte,
Allerdings! :twisted:

Code: Alles auswählen

message1 = message1.Subst("\n","");
Natürlich war Replace gemeint und nicht Subst(itude), kommt davon, wenn man in seinem Leben mehr als eine Programmiersprache gelernt hat... :oops:


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“