Bestimmten Teil im Wort erkennen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bestimmten Teil im Wort erkennen

    Hallo,

    ganz kurz:
    Ich möchte aus bspw., dass aus dem Link "https://www.youtube.com" das Wort "youtube" erkannt/ausgelesen wird.
    Mit string_pos kann ich es leider nicht verwirklichen, da man auch selber Links hinzufügen können soll und nicht jede Seite https benutzt oder nicht jeder zwangsläufig ein "www" vor dem Link setzt.

    Gibt es dafür einen Befehl oder einen Denkanstoß, wie man das verwirklichen könnte?

    Gruß
    icqgamer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von icqgamer ()

  • du benutzt eine for schleife, in der du den ganzen String einmal durchgehst, dabei speicherst du bei jedem Durchlauf der Schleife, den momentanen Charakter im String in eine Variable, wenn diese Variable nun den gewünschten Charakter hat, brichst du ab und machst das, was du damit machen willst.

    Hier mal ein ganz kleines Codebeispiel:

    GML-Quellcode

    1. web = "http://seite.de"
    2. for(i=1;i<string_length(web),i++)
    3. {
    4. var cur = string_char_at(web,i);
    5. if(cur == "/")
    6. {
    7. show_message("YEAH");
    8. break;
    9. }
    10. }
    Alles anzeigen


    so in etwa, denke ich mal. Hatte das mal für meinen Server genutzt, damit die Konsole Commands erkennt.
  • Hallo.

    Danke erstmal für deine schnelle Antwort.

    Alt:
    Spoiler anzeigen

    So wie ich das herausgelesen habe, ist dein Prinzip eher auf einzelne Charakter ausgelegt und nicht auf ganze Wörter.
    Ich habe versucht mir daraus mal was zu basteln, damit er komplette Wörter erkennt - der Ansatz war gut, jedoch machen die Arrays Probleme ohne Ende gerade und ich finde einfach den Fehler nicht!

    GML-Quellcode

    1. web = "http://youtube.com/user/";
    2. cur = "";
    3. wort = "";
    4. i = 0;
    5. //Wort soll später das komplette Wort sein, was ausgelesen werden soll!
    6. //i ist eine extra Zählervariable für die 2. Schleife, in der außerdem die Buchstaben gespeichert werden.
    7. for(pos = 0; pos < string_length(web); pos+=1;)
    8. {
    9. i+=1;
    10. cur[i] = string_char_at(web,pos);
    11. }
    12. //Hier habe ich jetzt die Buchstaben speichern lassen (per manuelle Ausgabe, sprich cur[0] - cur[30] klappt auch die Anzeige der Buchstaben!
    13. //Und nun zum Problemkind.....
    14. //Erstmal wieder i auf 0 setzen, damit i von Anfang an von der 2. Schleife geprüft werden kann, ob es sich um die richtigen Werte/Buchstaben handelt
    15. i = 0;
    16. while(i<pos)
    17. {
    18. i+=1; if cur[i] != "y" { wort = ""; } else { wort+=string(cur[i]); }
    19. //Logisch: Wenn der Buchstabe KEIN y ist, dann soll wort leer bleiben bzw. zurückgesetzt werden.
    20. //Ansonsten soll wort den Buchstaben aus cur[i] hinzufügen, also: wort = 0; wort+="y"; wort = "y";
    21. //Dann wird der nächste Buchstabe geprüft, wenn dieser nicht der gewünschte Buchstabe zur Vervollständigung des Wortes ist (ein o in diesem Fall), dann soll
    22. //wort wieder zurückgesetzt werden. Wenn cur[i] allerdings WIEDER den richtigen Buchstaben liefert, soll dieser wieder wort hinzugefügt werden, so dass
    23. //wort dann schließlich wort=yo ist.
    24. i+=1; if cur[i] != "o" { wort = ""; } else { wort+=string(cur[i]); }
    25. i+=1; if cur[i] != "u" { wort = ""; } else { wort+=string(cur[i]); }
    26. i+=1; if cur[i] != "t" { wort = ""; } else { wort+=string(cur[i]); }
    27. i+=1; if cur[i] != "u" { wort = ""; } else { wort+=string(cur[i]); };
    28. i+=1; if cur[i] != "b" { wort = ""; } else { wort+=string(cur[i]); }
    29. i+=1; if cur[i] != "e" { wort = ""; } else { show_message("Wort: "+string(wort)+"#cur[i]: "+string(cur[i])); }
    30. }
    Alles anzeigen


    Normalerweise ist eine kopfgesteuerte Schleife hier meiner Meinung nach die effektivste Schleife.
    Aber alles, was ich als Belohnung für die Überlegung bekomme, ist:

    Quellcode

    1. ___________________________________________
    2. ERROR in
    3. action number 1
    4. of Create Event
    5. for object object0:
    6. Error in code at line 17:
    7. i+=1; if cur[i] != "u" { wort = ""; } else { wort+=string(cur[i]); }
    8. ^
    9. at position 15: Unknown variable cur or array index out of bounds


    Jemand eine Idee?
    Macht es Sinn, an dem Gedanken festzuhalten?


    Neu:
    Spoiler anzeigen

    SOO! Jetzt habe ich eine Methode gefunden und sie klappt bestens ohne größeren Aufwand! Ich bedanke mich für den Denkanstoß!

    GML-Quellcode

    1. web = "http://yoyiyoutube.com";
    2. wort = "";
    3. i = 0;
    4. while(i<string_length(web))
    5. {
    6. i+=1;
    7. cur = string_char_at(web,i);
    8. if string(cur) == "y" or string(cur) == "Y"
    9. {
    10. wort+=string(cur);
    11. if string_char_at(web,i+1) == "o" or string_char_at(web,i+1) == "O" then
    12. if string_char_at(web,i+2) == "u" or string_char_at(web,i+2) == "U" then
    13. if string_char_at(web,i+3) == "t" or string_char_at(web,i+3) == "T" then
    14. if string_char_at(web,i+4) == "u" or string_char_at(web,i+4) == "U" then
    15. if string_char_at(web,i+5) == "b" or string_char_at(web,i+5) == "B" then
    16. if string_char_at(web,i+6) == "e" or string_char_at(web,i+6) == "E" then
    17. {
    18. cur = string_char_at(web,i+1); wort+=string(cur);
    19. cur = string_char_at(web,i+2); wort+=string(cur);
    20. cur = string_char_at(web,i+3); wort+=string(cur);
    21. cur = string_char_at(web,i+4); wort+=string(cur);
    22. cur = string_char_at(web,i+5); wort+=string(cur);
    23. cur = string_char_at(web,i+6); wort+=string(cur);
    24. show_message(wort);
    25. }
    26. else
    27. {
    28. wort = "";
    29. }
    30. }
    31. else
    32. {
    33. wort = "";
    34. }
    35. }
    Alles anzeigen


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von icqgamer ()