Szerző Téma: Szöveg részlet lekérdezése  (Megtekintve 871 alkalommal)

Nem elérhető inf

  • 366
    • Profil megtekintése
Szöveg részlet lekérdezése
« Dátum: 2014. Május 27. - 16:42:09 »
0 Show voters
Üdv.
Valaki tudna nekem írni egy olyan scriptet ami egy szövegbõl lekér egy részletet.
Pl.: Kék asdaz ég.
Ebbõl a szövegbõl csak az \"asd\" szöveg részletet érzékelné és ha 2x szerepel benne pl így
Kék asdaz asdég.
Akkor a másikat is kérje ki és mentse egy változóba hogy hány olyan bizonyos szó van benne.
Elõre is köszönöm! :)
« Utoljára szerkesztve: 2014. Május 27. - 17:07:05 írta InFIeL_HuN »

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #1 Dátum: 2014. Május 27. - 16:53:58 »
+1 Show voters
Ezt egy kis ciklussal meg lehet írni elméletben, de én effektívre akarom, hiszen lehet jobb megoldás is ennél a problémádra. Mi lenne az? Mármint, ez mihez kéne? Addig is nézz körül a wikin az str-el kezdõdõ függvényeknél. Különösen az strcmp, az strfind és az strmid-et ajánlanám.

Nem elérhető inf

  • 366
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #2 Dátum: 2014. Május 27. - 17:48:57 »
0 Show voters
Ez így jó?
 
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #3 Dátum: 2014. Május 27. - 19:35:30 »
+1 Show voters
Na, hát megpróbáltam megcsinálni, tesztelni nem volt alkalmam, szóval valószínûleg lesz benne pár hiba.
 
stock karil_rsz(szvg[], kulcs[], bool:kellnb=true) {
new tsz, hanyknal = strfind(szvg, kulcs, !kellnb);
while(hanyknal != -1) {tsz++; hanyknal = strfind(szvg, kulcs, !kellnb, hanyknal+strlen(kulcs));}
return tsz;
}

 
Használata:
 
printf(\"A \'Sajt kenyér sajt sajt kenyér\' karakterláncban a \'kenyér\' %d helyen fordul elõ.\", karil_rsz(\"Sajt kenyér sajt sajt kenyér\", \"kenyér\", true));

 
Az utolsó paraméter, ha true, ellenõrzi a nagybetût is, ha false, a \"sajt\"-ra beleszámolja a \"SaJt\"-ot is. Nem csak printfnél, máshol is használhatod, vagy változóba is teheted. new valtozo = karil_....
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Géphez jutottam, azonnal javítottam is benne a hibákat, már szépen teszi a dolgát.
Amúgy, ha érdekel valakit, a karil_rsz a karakterlánc-részletszámláló rövidítése.
\"width=500\"8pBH2eU.jpg?1\"
[/img]
U.i.: ha az utolsó paramétert nem adod meg, true lesz.
Másik használati példa:
 
public OnPlayerText(playerid, text[]) {
        new hanyszor = karil_rsz(text, \"asd\", false); //annyi lesz a \"hanyszor\" változó, ahányszor a szövegben szerepel az ASD szó, akár kis- akár nagybetûkkel.
if(hanyszor > 2) {
                printf(\"Egy üzenet több, mint 2 \'asd\'-ot tartalmazott, így nem engedtük elküldeni.\");
                return SendClientMessage(playerid, -1, \"Az üzenetedben az \'asd\' szó nem fordulhat elõ kettõnél többször!\");
        }
}
« Utoljára szerkesztve: 2014. Május 28. - 15:58:37 írta KovaNovik »

Nem elérhető inf

  • 366
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #4 Dátum: 2014. Május 27. - 16:42:09 »
0 Show voters
Üdv.
Valaki tudna nekem írni egy olyan scriptet ami egy szövegbõl lekér egy részletet.
Pl.: Kék asdaz ég.
Ebbõl a szövegbõl csak az \"asd\" szöveg részletet érzékelné és ha 2x szerepel benne pl így
Kék asdaz asdég.
Akkor a másikat is kérje ki és mentse egy változóba hogy hány olyan bizonyos szó van benne.
Elõre is köszönöm! :)
« Utoljára szerkesztve: 2014. Május 27. - 17:07:05 írta InFIeL_HuN »

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #5 Dátum: 2014. Május 27. - 16:53:58 »
0 Show voters
Ezt egy kis ciklussal meg lehet írni elméletben, de én effektívre akarom, hiszen lehet jobb megoldás is ennél a problémádra. Mi lenne az? Mármint, ez mihez kéne? Addig is nézz körül a wikin az str-el kezdõdõ függvényeknél. Különösen az strcmp, az strfind és az strmid-et ajánlanám.

Nem elérhető inf

  • 366
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #6 Dátum: 2014. Május 27. - 17:48:57 »
0 Show voters
Ez így jó?
 
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Szöveg részlet lekérdezése
« Válasz #7 Dátum: 2014. Május 27. - 19:35:30 »
0 Show voters
Na, hát megpróbáltam megcsinálni, tesztelni nem volt alkalmam, szóval valószínûleg lesz benne pár hiba.
 
stock karil_rsz(szvg[], kulcs[], bool:kellnb=true) {
new tsz, hanyknal = strfind(szvg, kulcs, !kellnb);
while(hanyknal != -1) {tsz++; hanyknal = strfind(szvg, kulcs, !kellnb, hanyknal+strlen(kulcs));}
return tsz;
}

 
Használata:
 
printf(\"A \'Sajt kenyér sajt sajt kenyér\' karakterláncban a \'kenyér\' %d helyen fordul elõ.\", karil_rsz(\"Sajt kenyér sajt sajt kenyér\", \"kenyér\", true));

 
Az utolsó paraméter, ha true, ellenõrzi a nagybetût is, ha false, a \"sajt\"-ra beleszámolja a \"SaJt\"-ot is. Nem csak printfnél, máshol is használhatod, vagy változóba is teheted. new valtozo = karil_....
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Géphez jutottam, azonnal javítottam is benne a hibákat, már szépen teszi a dolgát.
Amúgy, ha érdekel valakit, a karil_rsz a karakterlánc-részletszámláló rövidítése.
\"width=500\"8pBH2eU.jpg?1\"
[/img]
U.i.: ha az utolsó paramétert nem adod meg, true lesz.
Másik használati példa:
 
public OnPlayerText(playerid, text[]) {
        new hanyszor = karil_rsz(text, \"asd\", false); //annyi lesz a \"hanyszor\" változó, ahányszor a szövegben szerepel az ASD szó, akár kis- akár nagybetûkkel.
if(hanyszor > 2) {
                printf(\"Egy üzenet több, mint 2 \'asd\'-ot tartalmazott, így nem engedtük elküldeni.\");
                return SendClientMessage(playerid, -1, \"Az üzenetedben az \'asd\' szó nem fordulhat elõ kettõnél többször!\");
        }
}
« Utoljára szerkesztve: 2014. Május 28. - 15:58:37 írta KovaNovik »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal