Probs mit SubString und Pos
-
hi,
ich möchte etwas aus einem sehr langen string raus parsen. und zwar so:
Address = Temp.SubString(Temp.Pos("SeissionID=") + 15,Temp.Pos(">"));
Temp sieht ungefär so aus:
SeissionID=33vb2524353453566239vnbnb780nb342n432>
alles zwischen SeissionID= und > möchte ich nun parsen, also der variable "Address" übergeben. die länge und der inhalt der sessionID ist immer mal anders. also z.B.
SeissionID=309804353453566239vnbnb780nb342n432>
SeissionID=89089239vnbnb780nb342n432>
SeissionID=3398888888898098098098089089hkhjkhjkhjkb780nb342n432>jetzt, was mache ich genau fallsch bei meinem code oben?
also mit "Temp.Pos("SeissionID=") + 15" will ich ja erreichen das nach dem = angefangen werden soll zu parsen. und mit "Temp.Pos(">")" will ich erreichen das beim ersten ">" das kommt, aufgehört wird.
-
a) Wie kommst du auf 15, 'SeissionID=' ist doch nur 11 Zeichen lang!?
b) Temp.Pos(">") liefert (da '>' am Ende) die Länge des gesamten Strings, davon musst du ja wohl noch etwas abziehen.Address = Temp.SubString(12, Temp.Length() - 12);
-
hallo Jansen. sorry, ich muss wohl noch dazu sagen das vor und nach:
SeissionID=89089239vnbnb780nb342n432>
nen haufen html code ist
deswegen geht das ja mit:
Temp.Length() - 12
nicht
-
Dann nimm halt Pos, abziehen musst du trotzdem.
-
versteh ich jetzt nicht. was wäre dann der inhalt von Pos ?
-
Ach nu stell dich doch nicht so an!
Address = Temp.SubString(12, Temp.Pos(">") - 12);
-
ich glaub wir reden aneinander vorbei
das mit dem index ist ja sicher ok soweit. aber wie soll das mit dem count (Temp.Pos(">") - 12) gehen? wiegesagt, vor und nachSeissionID=89089239vnbnb780nb342n432>
ist ne menge html code. jetzt rate mal wieviel von ">" da so vorkommen
also kann ja deine lösung nicht gehen
-
habs selber gelöst.
int Pos = -1; int Count = 11; String c; while(c != ">") { c = Temp.SubString(Temp.Pos("SeissionID=") + Count,1); Count++; Pos++; }
oder hat jemand eine bessere lösung?
-
// SeissionID=309804353453566239vnbnb780nb342n432>
AnsiString parse = ""; parse = text.SubString( 11, text.Length() -12 );
-
schreibe ich so undeutlich?
vor und nach
SeissionID=309804353453566239vnbnb780nb342n432>
ist ne menge HTML CODE. das heisst also das
SeissionID=309804353453566239vnbnb780nb342n432>
irgendwo in dem scheiss HTML code ist. somit kannst du Length() vergessen, was Jansen ja bereits vorgeschlagen hat
-
Stell dich doch nicht so an!!
Mittels Pos ermittelst du die Position von 'SessionID=' und löschst alles davor aus dem String. Anschliessend wendest du mein letztes Beispiel auf den Rest-String an.
-
geht kürzer aber so sollte es verständlich sein...
String text= "irgendeinscheisshtmlcodeSeissionID=33vb2524353453566239vnbnb780nb342n432>irgendeinscheissnochkeineahnungwas";
int pos = text.Pos("SeissionID=");
String text2 = text.Delete(1,pos+11);
pos = text2.Pos(">");
String text3 = text2.Delete(pos,text2.Length());
ShowMessage(text3);[ Dieser Beitrag wurde am 15.06.2003 um 16:58 Uhr von madGhost editiert. ]