String-Matching Funktion 2.5

  • GM 7

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

  • String-Matching Funktion 2.5

    Aktualisiert: v2.5

    Hallo zusammen,

    ich hätt' da mal 'ne Frage (sonst würde ich auch wohl nicht posten ^^) :

    Hab schon mein Gehirn und Suchmaschienen gequält, aber nichts gefunden.
    Ich bin auf der Suche nach einer String-Matching Funktion. Also im Stil von:

    bool string_match (string subject, string match)

    Als Beispiele wäre da:

    subject: test.gmk
    match: *.gmk
    return: true

    subject: Wenn Abfrage Dann Anweisung Sonst Anweisung
    match: Wenn * Dann * Sonst *
    return: true

    subject: OhneIrgendwas Leerzeichen
    match: Ohne * Leerzeichen
    return: false

    subject: ***
    match: ***
    return: true


    Beispiele Funktionieren jetzt!

    Aktueller Code v2.5

    GML-Quellcode

    1. var subject, match, temp, pos;
    2. subject = argument0;
    3. match = argument1;
    4. temp = true;
    5. for (pos = 0; (temp == true && pos < string_length(match)); pos += 1)
    6. {
    7. if (string_char_at(match, pos) != "*")
    8. {
    9. temp = false;
    10. }
    11. }
    12. if (temp == true)
    13. {
    14. return true;
    15. }
    16. if (string_char_at(match, 1) == "*")
    17. {
    18. match = string_copy(match, 2, string_length(match) -1 );
    19. if (string_count("*", match) >= 1)
    20. {
    21. temp = string_copy(match, 1, string_pos("*", match) -1 );
    22. }
    23. else
    24. {
    25. temp = match;
    26. }
    27. subject = string_copy(subject, string_pos(temp, subject) +0 , string_length(subject));
    28. }
    29. repeat (string_count("*", match) +1)
    30. {
    31. if (string_count("*", match) == 0)
    32. {
    33. if (match == string_copy(subject, string_length(subject)-string_length(match)+1, string_length(match)))
    34. {
    35. return true;
    36. }
    37. else
    38. {
    39. return false;
    40. }
    41. }
    42. temp = string_copy(match, 1, string_pos("*", match) -1 );
    43. pos = string_pos(temp, subject);
    44. if (pos == 1)
    45. {
    46. subject = string_copy(subject, string_length(temp) +1 , string_length(subject));
    47. match = string_copy(match, string_pos("*", match), string_length(match));
    48. }
    49. else
    50. {
    51. return false;
    52. }
    53. if (string_char_at(match, 1) == "*")
    54. {
    55. match = string_copy(match, 2, string_length(match) -1 );
    56. if (string_count("*", match) >= 1)
    57. {
    58. temp = string_copy(match, 1, string_pos("*", match) -1 );
    59. }
    60. else
    61. {
    62. temp = match;
    63. }
    64. subject = string_copy(subject, string_pos(temp, subject) +0 , string_length(subject));
    65. }
    66. }
    67. return false;
    Alles anzeigen



    mfg,
    swffilms

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von swffilms ()

  • GML-Quellcode

    1. string_count('.gmk','test.gmk')

    gibt 1 oder mehr aus, je nachdem wie viele ".gmk" enthalten sind.

    *narf* erst fragen und dann selber lösen? ^^
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • WIN schrieb:

    ...
    *narf* erst fragen und dann selber lösen? ^^

    Ich hatte gehofft, dass jemand die Lösung schon parat hat, sodass ich mir die Arbeit sparen kann. ;)

    Neue Version und infos im ersten Post:
    GM 7 String-Matching Funktion 2.5

    mfg,
    swffilms

    EDIT:
    So Problem behoben, aber ich bitte darum, das ihr so viele wie möglich Beispiele postet, die ich testen kann, damit ich sicher gehen kann, dass die Funktion korrekt funktioniert.
    Immer diese langen Sätze... :whistling:

    Mit Beispiele meine ich irgendwelche extrem Situationen, die vermuten lassen, dass wenn Probleme auftreten, dass sie dort auftreten.

    (Im ersten Post)

    EDIT:
    Mir ist noch ein kleiner Fehler eingeschlichen: Ich bin davon ausgegangen, dass die Stringfunktionen bei 0 anfangen zu zählen. (Zuviele andere Programmiersprachen programmiert... :whistling: :D )
    Jetzt haut aber alles wieder hin.
    (Der vorherige Edit zählt noch. ^^ )

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von swffilms ()