Name
STRSUB
Syntax
STRSUB (ausgangstext, beginn, anzahl)
ausgangstext Typ Text
0 < beginn ≤ s, Typ integer *
0 < anzahl < s-beginn+1, Typ integer
* mit s=STRLEN(ausgangstext). Siehe auch Tipps und Tricks.
0 < beginn ≤ s, Typ integer *
0 < anzahl < s-beginn+1, Typ integer
* mit s=STRLEN(ausgangstext). Siehe auch Tipps und Tricks.
Gibt ein Teilstück des Textes von ausgangstext als Ergebnis zurück. Es werden anzahl Zeichen ab Position beginn übergeben.
ergebnis=STRSUB("aufteilen",4,4)
Siehe Abbildung.
auswahl="03-Klappladen"
zahl = STRSUB(auswahl,1,2)
thema = STRSUB(auswahl,4,STRLEN(auswahl)-4)
Analyse eines Eingabewertes.
Siehe Abbildung.
auswahl="03-Klappladen"
zahl = STRSUB(auswahl,1,2)
thema = STRSUB(auswahl,4,STRLEN(auswahl)-4)
Analyse eines Eingabewertes.
beginn und anzahl können größer sein, als dies der Text ausgangstext eigentlich zulässt, doch ist das Ergebnis dann auch entsprechend beschränkt. Bis Archicad 9 zeigte sich die Syntax hier als tolerant.
ergebnis = STRSUB("teil",5,4)
liefert als Ergebnis einen Leerstring. Ebenso wie folgender Ausdruck:
ergebnis = STRSUB("teil",3,0)
ergebnis = STRSUB("teil",2,10)
liefert als Ergebnis den Text "eil", also nur 3 Zeichen breit, auch wenn als Breite 10 Zeichen angegeben war.
ergebnis = STRSUB("teil",0,3)
ergebnis = STRSUB("teil",-3,3)
liefert als Ergebnis den Text "tei".
ergebnis = STRSUB("teil",5,4)
liefert als Ergebnis einen Leerstring. Ebenso wie folgender Ausdruck:
ergebnis = STRSUB("teil",3,0)
ergebnis = STRSUB("teil",2,10)
liefert als Ergebnis den Text "eil", also nur 3 Zeichen breit, auch wenn als Breite 10 Zeichen angegeben war.
ergebnis = STRSUB("teil",0,3)
ergebnis = STRSUB("teil",-3,3)
liefert als Ergebnis den Text "tei".
GDL lieferte in früheren Versionen keine Funktion, um Texteingaben in Groß- oder Kleinschrift zu wandeln. Mit folgender Routine war dies aber mit STRSUB umzusetzen:
quelle="teSTzeiLE 1;geMiSCHt."
ziel=""
klein=" abcdefghijklmnopqrstufwxyz"
gross=" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
FOR i=1 TO STRLEN(quelle)
subT=STRSUB(quelle,i,1)
posT=STRSTR(klein,subT)
IF posT THEN
ziel=ziel+STRSUB(gross,posT,1)
ELSE
ziel=ziel+subT ! unverändert übernehmen.
ENDIF
NEXT i
PRINT ziel
quelle="teSTzeiLE 1;geMiSCHt."
ziel=""
klein=" abcdefghijklmnopqrstufwxyz"
gross=" ABCDEFGHIJKLMNOPQRSTUVWXYZ"
FOR i=1 TO STRLEN(quelle)
subT=STRSUB(quelle,i,1)
posT=STRSTR(klein,subT)
IF posT THEN
ziel=ziel+STRSUB(gross,posT,1)
ELSE
ziel=ziel+subT ! unverändert übernehmen.
ENDIF
NEXT i
PRINT ziel
ab 6.0