Autor | Thema: String auseinander nehmen? | | Datum:29.10.01 15:23 
(sascha@willecke-net.de) | |
Hallo,
ich habe einen string in dieser form:
SX100SY100BX50BY200PU10
Nun möchte ich diesen String so zerlegen, dass ich folgendes erhalte:
SX=100
SY=100
BX=50
BY=200
PU=10
Ist das möglich?
Gruß
Sascha
|
| | Datum:29.10.01 18:19 
(andreas@andreas-miethe.de) | |
Hallo Sasche,
dafuer gibt es in Profan diverse Stringfunktionen !
Ein Beispiel :
Declare S$,x%,a%
Declare Search$,Find$,F$
x% = 2
S$ = "SX100SY100BX50BY200PU10"
F$ = S$
Search$ = "SX,SY,BX,BY,PU"
Whilenot x% = 6
'erstmal filtern und Semikolon einfuegen
'INS$ fuegt String in String ein
'INSTR ermittelt die Position
'SUBSTR$ ermittelt Teilstring
Find$ = Ins$(";",F$,@Instr(Substr$(Search$,x%,","),S$)+a%)
F$ = Find$
Inc a%
Inc x%
EndWhile
Print Find$
Print
X% = 1
Whilenot x% = 6
'Ergebnis =
'die ersten beiden Zeichen +
'= +
'die rechstlichen Zeichen
Print Mid$(Substr$(Find$,x%,";"),1,2)+\
"="+\
Mid$(Substr$(Find$,x%,";"),3,Len(Substr$(Find$,x%,";")))
Inc x%
EndWhile
Waitinput
End
|
| | Datum:29.10.01 18:44 
(mrk@mrk-soft.de) | |
Das gehört wohl mehr ins forum "Einsteiger",
den mit ein bisssel überlegung ist das
recht simpel nichtsdesto trotz:
'string auseinandernehmen, (R) MRK-Soft 2001
'profan 7.0
'lokal für alle declarieren
declare sx%, sy%, bx%, by%, pu%
proc STW
parameters quell$
declare zl1$, zl2$, zl1%
decimals 0
zl1% = 1
While zl1% < len(quell$)
zl1$ = zl1$ + upper$(mid$(quell$,zl1%,1))
zl2$ = str$(val(mid$(quell$,zl1%+1,3)))
If equ$(zl1$,"SX")
sx% = val(zl2$)
add zl1%,len(zl2$)
zl1$ = ""
Endif
If equ$(zl1$,"SY")
sy% = val(zl2$)
add zl1%,len(zl2$)
zl1$ = ""
Endif
If equ$(zl1$,"BX")
bx% = val(zl2$)
add zl1%,len(zl2$)
zl1$ = ""
Endif
If equ$(zl1$,"BY")
by% = val(zl2$)
add zl1%,len(zl2$)
zl1$ = ""
Endif
If equ$(zl1$,"PU")
pu% = val(zl2$)
add zl1%,len(zl2$)
zl1$ = ""
Endif
inc zl1%
Wend
endproc
'und das testprogramm
declare werte$
werte$ = "SX101SY102BX54BY200PU10"
STW werte$ 'proc aufrufen
print "SX",sx%
print "SY",sy%
print "BX",bx%
print "BY",by%
print "PU",pu%
waitkey
gruss Thorsten
|
| | Datum:29.10.01 19:50 
(sascha@willecke-net.de) | |
Hallo,
danke für eure schnellen antworten aber thorsten sag mal hättest du dir das nicht sparen können: "mit ein bischen überlegen...."! Ich hab überlegt aber ich habs nicht ganz so hinbekommen wir ihr! Außerdem dachte ich das es vielleicht ne kürzere und schnellere variante gibt!
Gruß
Sascha
|
| | Datum: 30.10.01 07:34 
(mrk@mrk-soft.de) | |
Sascha, das war nit bös gemaint,
nur mit ein bissel schauen in der Hilfe bei
den String-Funktionen und dann noch ein
paar eigene gedankengänge dazu hätte
man drauf kommen können, die Lösung von
Bernd, eine Zeile, (Definition), ist die
küreste, die machbar ist.
Thorsten
|
| | Datum:29.10.01 20:54 
(b.kuenzel@chello.at) | |
Hallo Sascha,
hier eine kurze Möglichkeit der Stringzerlegung für dein Problem
Def Wert(2) Val(SubStr$(Upper$($(1)),2,Upper$($(2))))
Declare S$
S$="SX100SY100BX50BY200PU10"
Print Wert(S$,"SX")
Print Wert(S$,"sy")
Print Wert(S$,"bx")
Print Wert(S$,"BY")
Print Wert(S$,"PU")
MFG aus Innsbruck
Bernhard
|
| | Datum:30.10.01 00:58 
(joerse@gmx.de) | |
Hallo,
Ich hab' auch noch 'ne Methode:-)
declare s$
S$=translate$(translate$(translate$("SX100SY100BX50BY200PU10","SY",",SY"),"B",",B"),"P",",P")
S$=translate$(translate$(translate$(s$,"X","X="),"Y","Y="),"U","U=")
print s$
WhileLoop 5
print SubStr$(s$,&loop,",")
Wend
WaitInput
Jörg
|
|
|