Crackkk-GM Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Siema, dzisiaj napisałem skrypcik: GML (stringsplit) kod = argument0; tab = argument1; for ( i = 0; i < string_count(" ",kod)+1; i += 1 ) { variable_local_array_set( tab, i, "" ) } a = 0; for ( i = 0; i < string_length( kod )+1; i += 1 ) { if ( string_char_at( kod, i ) != " " ) { execute_string( string(tab)+"["+string(a)+"] += string_char_at( kod,"+string(i)+");"); } else { a += 1; } } return (a); Zwraca liczbę wyrazów ( zero też się liczy :D ) i tworzy tablicę w której będą oddzielnie wyraz. string_split( string, "nazwa tablicy" ); przykład użycia: GML (create) tekst = "abc def ghi"; wyrazy = string_split( tekst, "tablica" ); // draw: draw_text( 10, 10, tablica[wyrazy] ); //ostatni wyraz</span></span></span> Enjoy ;) (za użycie nie potrzeba kredków:P)
Nobody Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Wydaje mi się, że widziałem już coś takiego na GMClanie. Jeżeli nie - zwracam honor, ale w kilka sekund można to znaleźć na google pisząc "gml string explode". EDIT: Dodatkowo ten twój kod trochę mało wydajny :P Nie lepiej skorzystać z string_pos, string_copy i string_delete ?
Kofel Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 GM ma dziwne problemy z zwracaniem tablic, przynajmiej ja tak miałem
Nobody Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Dziwisz się, jak Crack zrobił pętle powtarzającą się tyle razy ile znaków w stringu ? :P
Tymon Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Nie dziwię się, bez odpalenia tego wiem, że muli.
Dawidds Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Wszystkie variable_* są mulaste... :P Już lepiej to do jakieś zmiennej zapisać, lub po prostu zwrócić tablicę.
Pental Stary Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Ech, teraz za takie coś ludzie creditsów wymagają? Pff :/ ...
Pental Stary Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 Nobody, właśnie o to mi chodzi... Jak można by było za takie coś creditsy dawać :o ?
Crackkk-GM Opublikowano 7 Maja 2009 Autor Opublikowano 7 Maja 2009 Nobody, właśnie o to mi chodzi... Jak można by było za takie coś creditsy dawać :o ?No i po co spamujesz? Przecież pisze że NIE trzeba <_<
Nobody Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 On chyba uznał, że to jest na tyle oczywiste, że nie trzeba pisać.
Tymon Opublikowano 7 Maja 2009 Opublikowano 7 Maja 2009 GML // explode( separator, string, variable ) var _code, _count, _position, _string; _code = ''; _count = 0; while( true ) { _position = string_pos( argument[0], argument[1] ); if( _position == 0 ) { _position = string_length( argument[1] ); if( _position == 0 ) break; _string = argument[1]; } else _string = string_copy( argument[1], 1, _position - 1 ); _code += argument[2] + '[' + string( _count ) + ']="' + string_replace_all( _string, '"', '"+chr(34)+"' ) + '";'; argument[1] = string_delete( argument[1], 1, _position ); _count += 1; } if( _count > 0 ) execute_string( _code ); return _count; O. EDIT Kolejna alternatywa: GML // explode( separator, string, variable ) var _count; _count = string_count( argument[0], argument[1] ) + 1; if( argument[0] != '"' ) argument[1] = string_replace_all( argument[1], '"', '"+chr(34)+"' ); argument[1] = string_replace_all( argument[1], argument[0], '";i+=1;' + argument[2] + '="' ); execute_string( 'var i;i=0;' + argument[2] + '="' + argument[1] + '";' ); return _count;
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się