Mort 29 Odesláno: 25. Říjen, 2012 Share Odesláno: 25. Říjen, 2012 Odborná práce se stringem Zdravím, napadlo mě, že jsem již dlouho nespravil tutoriál na něco užitečného. Tak mě napadlo udělat tutoriál na práci se stringem. Budu očekávat, že víte co je to string a jak je možné ho zapisovat.Začněme:Obtížnost: Obsah Strmid, strdel, strfind Vyhledávání určitého textu pomocí while Připojování nového textu (strins) Strmid, strdel, strfindUrčitě jste již někdě slyšeli o těchto funkcích. Já vám v této krátké části ukážu jejich funkci, co umí a jak nejlépe s nimi pracovatStrmid:Tato funkce "vyřízne" kus nějakého textu ze string1 a zapíše ho do textového řetězce string2 podle začátečního a koncevého bodu řezání. new string1[16]; //vytvoříme proměnnou string1 s 16 poly new string2[16]; // vytvoříme druhou proměnnou string2 s 16 poly ////////////////////////////// format(string1,16,"Ahoj jak se mas"); // do stringu 1 zapiseme chteny text ////////////////////////////// new pocatecniBod = 5; new koncovyBod = 9; strmid(string2,string1,pocatecniBod,koncovyBod); // nyni ve string2 je "jak" Strdel: Tato funkce zase ořeže kus textu. new string1[16]; //vytvoříme proměnnou string1 s 16 poly ////////////////////////////// format(string1,16,"Ahoj jak se mas"); // do stringu 1 zapiseme chteny text ////////////////////////////// new pocatecniBod = 5; new koncovyBod = 9; strdel(string1,pocatecniBod,koncovyBod); //nyní se ve string1 nachází "Ahoj se mas" Strfind:Tuto funkci by jste měli už znát, takže se s ní nebudu dlouho zabývat. Tato funkce vyhledá v textu určitý kus textu a vrací jeho počáteční bod. Pokud se v textu nenachází tak navrátí -1. Pro opáčko: http://wiki.sa-mp.com/wiki/Strfind Vyhledávání určitého textu pomocí whileToto je už celkem těžší na pochopení ale není to vůbec těžké. Řekněme že chceme udělat cenzuru která každé sprosté slovo smaže pomocí funkce strdelUkážu vám, jak k tomu nejlépe docílit, pokud vám to pálí :-D tak to pochopíte new string[128]; // vytvoříme string se 128 poly format(string,128,"Není možné jaký deb*l je a to je opravdový deb*l"); // vulgární text, který může uživatel odeslat do chatu new cenzura[6] = "deb*l"; // slovo které ve větě nechceme new pos; // tato proměnná nám bude odkazovat tam odkuď budeme řezat text //////////////////////////////// //////////////////////////////// while((pos = strfind(string1,cenzura,true)) != -1) // pokud se ve string 1 najde slovo deb*l tak se do proměnné pos zapíše jeho začáteční bod { strdel(string1,pos,pos+strlen(cenzura)); //odřízneme ze string 1 slovo deb*l tím, že začneme řezat od začátku (pos) a odřízneme celé slovo tím že přidáme délku slova deb*l } // cyklus jede tak dlouho dokuď se nesplní podmínka tj. pokud se pos = -1 //Hotovo, ve string1 se nyní nachází: "Není možné jaký je a to je opravdový " Připojování nového textu (strins)Další užitečná věc je strins. Díky tomu se dá připojovat nový text k už vytvořenému textu. Ano, možná si říkáte, že na to je i strcat. Máte pravdu, jen jedna malá vyjímka - pomocí strins můžeme vložit text do jakékoliv části! Řekněme, že nechceme u cenzury ořezat kus textu ale nahradit ho třeba hvězdičkami. Ukážu vám, jak na to, pokud jste pochopily minulý příklad, toto pro vás bude nic )) new string1[128] = "Není možné jaký deb*l je a to je opravdový deb*l"; // string1 new cenzura[6] = "deb*l"; // cenzura new pos; while((pos = strfind(string1,cenzura,true))!=-1) // cyklus { strdel(string1,pos,pos + strlen(cenzura)); // ořežeme strins(string1, pos, "*****"); // vložíme } printf("%s",string1); // pro jistotu vypíšeme // Vypíše se nám: Není možné jaký ***** je a to je opravdový ***** Tohle je jen pro začátečnické zorientování, budu sem přikládat další fígly a příklady, naučím vás vše co umím se stringem. Pro dnešek by to stačilo, pokud jsem vám nějak pomohl, můžete mi okomentovat tutoriál (a samozřejmě mi zvednout reputaci )), pokud mám někde chybu tak mi ji taky nahlašte a díky za přečtení tutoriálu.Děkuji,Mort. 4 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now