String-Wert ändern/anpassen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Heavy-Dee
Beiträge: 143
Registriert: 18. Jan 2018 16:38
Answers: 0

String-Wert ändern/anpassen

Beitrag von Heavy-Dee »

Guten morgen,
Ich sitze mal wieder vor einem Problem und weiß nicht wo ich die Lösung nach googeln kann.
Vielleicht kann mir jmd nen Tipp geben.

1. Wie kann ich folgenden String-Wert ändern/anpassen

DE7414578307

Im ersten Schritt sollte nach der 4. Stelle ein Bindestrich und nach der 10. Stelle ein Doppelpunkt eingefügt werden.
-> DE74-145783:07
Im zweiten Schritt sollte nach einem Leerzeichen der Text einer Variablen angefügt werden.
-> DE74-145783:07 varText

Die neue Zeichenfolge sollte dann so auf der Sitemap angezeigt werden.


2. Wie kann man bei einem Wert die führenden Null weglassen

08576IZ47512

-> 8576IZ47512



Gruß
DIRK
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: String-Wert ändern/anpassen

Beitrag von udo1toni »

Ein String ist ein String. Du musst den String in Teilstrings zerlegen und anschließend wieder zusammenfügen. Die entsprechende Funktion heißt substring(start,end) und erwartet zwei Integer. Für die Teilstrings sähe das so aus:

Code: Alles auswählen

var String strAnotherString = "Irgendein Test"

rule "format string"
when
    Item MyInputString changed
then
//    val String strIn = MyInputString.state.toString
    val String strIn = "DE7414578307" // zum Testen
    val String strPart1 = strIn.substring(0,3)
    val String strPart2 = strIn.substring(4,9)
    val String strPart3 = strIn.substring(10,11)
    val String strOut = strPart1+"-"+strPart2+":"+strPart3+" "+strAnotherString
end
Bei der zweiten Frage möchte ich nochmal darauf hinweisen, dass es sich um einen String handelt. Wenn Du die Null weg haben möchtest, musst Du den String daraufhin prüfen, ob er mit einer Null anfängt, und gegebenenfalls den String entsprechend bearbeiten. Dabei gibt es kein "Abziehen" von Zeichen. Auch beim Trim-Befehl (Entfernen von führenden und abschließenden Leerzeichen) wird von der Funktion letztlich auf das erste und letzte "Nicht-Leerzeichen" hin durchsucht, anschließend wird der Bereich ausgeschnitten und als String zurückgeliefert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Heavy-Dee
Beiträge: 143
Registriert: 18. Jan 2018 16:38
Answers: 0

Re: String-Wert ändern/anpassen

Beitrag von Heavy-Dee »

Hallo Udo,

Habe den ersten Teil bis zu deinem Post wie folgt umgesetzt bekommen.

Code: Alles auswählen

itemNeu.postUpdate(itemAlt.state.toString.substring(0,4) + "-" + itemAlt.state.toString.substring(4,10) + ":" + itemAlt.state.toString.substring(10,12) + " (aktuell)")
Hat es Vor/-Nachteile wenn ich nicht über die Variablen gehe, sondern direkt am Item?
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: String-Wert ändern/anpassen

Beitrag von udo1toni »

Na ja, Wenn Du Dir die Zeile anschaust, siehst Du schon einen Nachteil... es ist unübersichtlich. Solange Du damit klar kommst, kannst Du machen, was Du willst :) Für die Ausführung spielt es hingegen keine Rolle, der Code wird sozusagen kompiliert (wobei das der falsche Ausdruck ist...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten