Feature Request: .Find("string") auf letztes Zeichen

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

Moderator: Co-Administratoren

Antworten
dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Feature Request: .Find("string") auf letztes Zeichen

Beitrag von dtp » 01.12.2020, 16:40

Hallo,

bekanntlich kann man ja mit '.Find("a")' das erste "a" in einer Zeichenkette finden. Ich bräuchte diese Funktion nun aber für das letzte "a" (bzw. einen beliebigen String) in der Zeichenkette.

Warum das ganze? Ich möchte z.B. die Zeichenkette "<font color=blue>Hallo,</font> ich bin's!" nach dem letzten ">" abbrechen, um sie geteilt senden zu können. Will dabei aber eben vermeiden, dass ich mitten im HTML-Tag unterbreche.

Die Funktion '.Split(">")' würde mir da leider nicht weiterhelfen, weil sie dann ja insgesamt drei Teil-Zeichenketten erzeugt.

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.

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Feature Request: .Find("string") auf letztes Zeichen

Beitrag von MichaelN » 01.12.2020, 19:49

Meine Idee wäre da mit .Substr(n,1) durch den String zu iterieren, das Ergebnis mit dem gesuchten Zeichen zu vergleichen und am Ende der Schleife hast Du entweder 0 oder das letzte Vorkommen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

jp112sdl
Beiträge: 12072
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 846 Mal
Danksagung erhalten: 2138 Mal
Kontaktdaten:

Re: Feature Request: .Find("string") auf letztes Zeichen

Beitrag von jp112sdl » 01.12.2020, 22:32

Ich denke so sollte es ganz unkompliziert nach Michaels Vorschlag gehen

Code: Alles auswählen

string s="<font color=blue>Hallo,</font> ich bin's!";

integer currentIdx=0;
integer lastCharIdx=0;
while (currentIdx < s.Length()) {
  if (s.Substr(currentIdx,1)==">") {
    lastCharIdx = currentIdx+1;
  }
  currentIdx=currentIdx+1;
}

!Alles vor dem letzten ">"
WriteLine(s.Substr(0,lastCharIdx));
!<font color=blue>Hallo,</font>

!Alles nach dem letzten ">"
WriteLine(s.Substr(lastCharIdx,(s.Length()-lastCharIdx)));
! ich bin's!

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

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