Zerteilen eines Strings in mehreren Abschnitten zu einer URL !
-
Hallo,
ich hab da ein Prob mit dem Zerteilen eines Strings.
Erstmal zu dem was ich machen möchte :
Ich möchte eine URL auf die 3 'w's prüfen, wenn die gefunden worden sind
soll alles davor gelöscht werdenBeipsiel: http://www....
Dann soll http:// abgeschnitten werden.Wenn das getan ist, soll die URL auf die Endung überprüft werden. (.de/.org/.com/.ru etc.) Und ebenfalls soll der Rest ab dort an abgeschnitten werden. Um das alles nochmal zu verdeutlichen habe ich hier ein kleines Beispiel gemacht :
http://www.Test.de/?php?=pjatsss.php?mode=oldtopic&f=1 // Diese URL soll dann so aussehen www.Test.de
Nun zu meiner angefangenen Lösung:
Ich dachte mir das kann man mit CString::Find() & Delete() & Left/Right & ReverseFind() lösen. Doch das geht nicht, da man bei ReverseFind zum Bsp.: keine 3 Buchstaben suchen kann, immer nur ein einzigen. Damit wäre das Problem schonmal erleutert...Wäre froh über jede Antwort...
Danke
K2theB
-
hi,
warum willst du überhaupt ReserveFind() benutzen?
Es ist doch möglich es mit Find() zu lösen
-
Hmm, also ich hab es jetzt geschafft das 'http://' abzutrennen. Doch wie kann ich nun alles ab .de/.org/.com/.ru etc. abtrennen ?
Danke
K2theB
-
Dann nimm wieder Find() und suche in deinem CString nach dem ersten '/'. Dadurch bekommst du die (Anfangs-)Position ab der du dann alles löschen kannst.
-
Hmm, aber wie kriege ich denn die Position ab '/' .. ?
for(int i = 0; i < strEURL.GetLength(); i++) { if(strEURL.Find('/') == i) { // Und jetzt ? } }
Wie soll ich weitermachen wenn '/' gefunden wurde ?
Danke
K2theB
-
So, wie ich es meine, benötigst du keine for-Schleife.
Ich dachte an diese Möglichkeit(ist nicht getestet):
{ int pos_sign=0, length=0; //... length = strEURL.GetLength(); pos_sign = strEURL.Find('/', 0); //oder strEURL.Find('//', 0) - musst du testen if(pos_sign != -1) strEURL.Delete(pos_sign, length-pos_sign); //... }
ist es jetzt ein wenig klarer, wie ich es gemeint habe?
Wie hast du das 'http://' entfernt?
-
Also so habe ich das "http://" entfernt
CString strEURL; GetDlgItemText(IDC_EDIT1, strEURL); for(int i = 0; i < strEURL.GetLength(); i++) { if(strEURL.Find("http://") == i) { strEURL.Replace("http://", ""); SetDlgItemText(IDC_EDIT1, strEURL); } }
Ist zwar ein bissl' umständlich aber es funktioniert
Doch ich hab immernoch Probleme mit deinem Code
Funktionieren tut er leider nicht, und ich muss sagen langsam wird die MSDN zu meinem besten Freund
Doch Hinweise zur Lösung konnte ich dort nicht finden...K2theB
-
was für Probleme sind das denn? Hab den Code bei mir getestet und er funktioniert
Gut, du kannst es mit Replace() lösen, aber auch mit Delete(). Ich bevorziehe da lieber Delete()...
Aber noch ein Tipp:
auch hier benötigst du keine Schleife
:xmas2: :xmas2: