Zeilenumbrüche in String löschen

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

Moderator: Co-Administratoren

Antworten
EckartS
Beiträge: 243
Registriert: 13.11.2012, 23:11
Wohnort: Nürnberg
Danksagung erhalten: 2 Mal

Zeilenumbrüche in String löschen

Beitrag von EckartS » 04.04.2016, 10:58

Hallo,

ich habe folgendes kleine Problem, für das ich auch mit der Suche hier keine Lösung gefunden habe.

Ich will aus einem Script Einträge ins HM-Protokoll schreiben. An sich kein Problem, aber wenn im String ein CR "\r" enthalten ist, wird bekanntlich das gesamte Protokoll in WebUI nicht mehr angezeigt. Also will ich die "\r" durch Leerzeichen ersetzen, bevor sie ins Protokoll wandern.

Folgender Code geht dafür mit jedem Zeichen, aber stürzt ab, wenn ich "\r" einfüge. Wie finde/ersetze ich Zeilenabbrüche dann?

Code: Alles auswählen

string	s1 = "Test\rTest" ;  ! Beispieltext GEHT NICHT
! "\r" hier und in Zeile 9 durch beliebiges anderes Zeichen ersetzt: GEHT
WriteLine(s1);
string s2; 
string s3; ! index
           foreach(s3,s1.Split("\r")) {s2 = s2#s3#" ";}
                  s1 = s2;
                  s2 = "";
                  s1 = s1.Substr(0, s1.Length()-1);
WriteLine(s1);
Weiß jemand Abhilfe?
Grüße, EckartS
711 Kanäle in 113 Geräten und 134 CUxD-Kanäle in 24 CUxD-Geräten

BadenPower

Re: Zeilenumbrüche in String löschen

Beitrag von BadenPower » 04.04.2016, 12:05

EckartS hat geschrieben:Weiß jemand Abhilfe?

Code: Alles auswählen

string s1 = "Test1\rTest2" ;
string s2 = "";
integer lLength = s1.Length();
integer liZ1 = 0;

WriteLine(s1);
WriteLine(s1.Length());

while (liZ1 < lLength)
{
  WriteLine(s1.Substr(liZ1,1));
  if(s1.Substr(liZ1,1) <> "\r")
  {
    s2 = s2 # s1.Substr(liZ1,1);
  }
  else
  {
    s2 = s2 # " ";
  }
  liZ1 = liZ1 +1;
}

WriteLine(s2);
WriteLine("--Ende--");

.

EckartS
Beiträge: 243
Registriert: 13.11.2012, 23:11
Wohnort: Nürnberg
Danksagung erhalten: 2 Mal

Re: Zeilenumbrüche in String löschen

Beitrag von EckartS » 04.04.2016, 12:40

Wunderbar, geht.
Danke für die schnelle Hilfe.
EckartS
711 Kanäle in 113 Geräten und 134 CUxD-Kanäle in 24 CUxD-Geräten

dtp
Beiträge: 10681
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 506 Mal

Re: Zeilenumbrüche in String löschen

Beitrag von dtp » 09.05.2016, 11:43

EckartS hat geschrieben: Folgender Code geht dafür mit jedem Zeichen, aber stürzt ab, wenn ich "\r" einfüge.
Was übrigens daran liegt, dass die Split-Funktion nur auf einzelne Zeichen und nicht auf Zeichenkombinationen anwendbar ist. Du kannst damit also in Verbindung mit der foreach-Schleife zwar ein Zeichen durch eine Zeichenkombination ersetzen, aber leider nicht umgekehrt.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

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