[WS] länge des result

Moin...
wenn ich im WebScript die Länge des Ergebniss haben möchte, wie mache ich das?

Beispiel:

		json_select "releaseDate"
		ifnot ""
			movechar 4
			ifnot ""

Das gibt mir die Fehlermeldung aus, das Movechar üngültig ist.

"releaseDate" kann folgende Werte haben:

  • YYYY # nur das Jahr
  • YYYY-MM # Jahr und Monat
  • YYYY-MM-DD # komplettes Datum

Idealerweise wäre ein Abfrage wie "if len>4" oder ähnlich vorteilhaft

hier nochmal der Abschnitt, wo die MOVECHAR Fehlermeldung auftriff:

		json_select "releaseDate"
		ifnot ""
			movechar 4
			ifnot ""
				if "-01-01"
					OutputTo "YEAR"
					movechar -4
					SayNChars 4
					OutputTo "DATE"
					Say "0101"
				else
					OutputTo "YEAR"
					movechar -4
					SayRest
					json_select "releaseDate"
					outputto "DATE"
					movechar 8
					sayNChars 2
					movechar -4
					sayNChars 2
				endif
			endif
		endif

Hoffentlich kann mir da jemand helfen
Danke

Wozu brauchst Du die Länge?

Genügt es nicht, wenn Du einfach immer nur die ersten 4 Zeichen (YYYY) abfüllst?
Oder einfach immer das, was vorhanden ist?

Ich versuche, das richtige DATE Feld zufüllen. und das ist nun mal ohne das Jahr.

Ich habe das bisher so gelöst:

outputto "Date"
json_select "date"
    findinline "-" 1 1
    ifnot ""
        # Search for     YYYY     MM      DD      Output it as DDMM
        RegexpReplace "^(\d{4})-(\d{2})-(\d{2})$" "$3$2"
        SayRegexp "^.*$"
    endif

ohh... manchmal kann die Lösung so einfach sein :slight_smile:

Danke

		json_select "releaseDate"
		findinline "-" 1 1
		ifnot ""
			gotochar 1
			movechar 4
			if "-01-01"
				OutputTo "YEAR"
				movechar -4
				SayNChars 4
				OutputTo "DATE"
				Say "0101"
			else
				OutputTo "YEAR"
				movechar -4
				SayRest
				json_select "releaseDate"
				outputto "DATE"
				movechar 8
				sayNChars 2
				movechar -4
				sayNChars 2
			endif
		else
			gotochar 1
			OutputTo "YEAR"
			sayrest
			OutputTo "DATE"
			Say "0101"
		endif

Nur als Randnotiz:

Falls Du ein Websource-Script damit veröffentlichst, würde ich einen Hinweis hinzufügen, dass Du bei fehlendem Release-Monat und/oder -Jahr ein fiktives Datum 0101 erfindest und in den Tag DATE füllst.

Wenn man das weiss und so nicht will, kann man die Script-Zeile Say "0101" entweder mit # deaktivieren oder ganz löschen.

Ich würde das für meinen ganz persönlichen Anwendungsfall nicht so toll finden, weil ich im Nachhinein nicht mehr unterscheiden könnte, ob das Releasedatum wirklich am 01.01. war oder ob es sich dabei um ein erfundenes Datum handelt.

Nein... meine modifizierten Scripts sind nur für mich...

Ich bin auch noch am überlegen, ob ich das wieder mit 0101 rausnehme und das DATE Tag einfach leer lasse, wenn kein Tag/Monat vorhanden ist....

1 Like