Filter funktion

  • GM 7
  • Filter funktion

    Ich bin gerade bei eine filter funktion zu machen. Diese sieht dann so aus: filter(string).
    Die funktion ist, sonderzeichen wie ÖÄÜ durch Ae, Ue ... auszutauschen. Ich habe schon mal was gemacht, doch es funktioniert nicht ganz. Kan mir jemand sagen warum?

    So siehts aus:

    GML-Quellcode

    1. // argument = string
    2. var strz, i;
    3. strz=string(argument)
    4. for (i=0 i<=string_length(strz) i+=1)
    5. {
    6. if string_char_at(strz,i)='Ä' {string_delete(strz,i,1); string_insert('Ae',strz,i)}
    7. if string_char_at(strz,i)='ä' {string_delete(strz,i,1); string_insert('ae',strz,i)}
    8. if string_char_at(strz,i)='Ö' {string_delete(strz,i,1); string_insert('Oe',strz,i)}
    9. if string_char_at(strz,i)='ö' {string_delete(strz,i,1); string_insert('oe',strz,i)}
    10. if string_char_at(strz,i)='Ü' {string_delete(strz,i,1); string_insert('Ue',strz,i)}
    11. if string_char_at(strz,i)='ü' {string_delete(strz,i,1); string_insert('ue',strz,i)}
    12. }
    13. return (string(strz))
    Alles anzeigen

    :P
  • Als erstes fällt mir mal auf, das du die Ergebnisse von string_delete und string_insert nicht zuweißt. Richtig müßte es lauten:

    GML-Quellcode

    1. strz = string_delete(strz,i,1);
    2. strz = string_insert('Ae',strz,i);


    Aber warum so kompliziert. Genau für solche dinge gibts die Funktion string_replace_all.

    Das sieht dann ca so aus:

    GML-Quellcode

    1. var strz;
    2. strz = argument0;
    3. strz = string_replace_all(strz,'Ä','Ae');
    4. strz = string_replace_all(strz,'ä','ae');
    5. strz = string_replace_all(strz,'Ü','ue');
    6. strz = string_replace_all(strz,'ü','ue');
    7. strz = string_replace_all(strz,'Ö','Oe');
    8. strz = string_replace_all(strz,'ö','oe');
    9. return (strz)
    Alles anzeigen
    ...