razbijmo vhodni niz v zetone tokens z uporabo razreda stringtokenizer uvod ko programiramo na kateremkoli splosnem programskem jeziku je veckrat potrebno razbiti velik string v vec manjsih kakorkoli ze ce delate z unix sistemskimi datotekami ali s starejsimi windows ini datotekami ali pa npr s tekstovno bazo podatkov veckrat berete zapise teh informacij in jih potem razbijete v manjse dele npr ce preberete stavek in ga zelite razbiti na manjse dele npr na besede zadnje case sem uporabljal to metodo za programsko interpretiranje branje vsebine html strani za mrezne robote ang web robots pomeni nekaj podobnega kot programsko ustvarjanje internet strani v tem clanku bomo demonstrirali kako razbiti java string e v manjse komponente ki jih v javi imenujemo tokens zetoni torej ce kadarkoli govorimo o zetonih mislimo na manjse string e v nekem vecjem string u zaceli bomo z razbijanjem razstavljanjem preprostih dobro znanih stavkov v besede potem pa bomo demonstrirali kako uporabiti enako tehniko za delo s tekstovno bazo podatkov razbiranje stavkov v besede eden najbolj znanih stavkov v ameriski zgodovini se zacne z naslednjimi besedami four score and seven years ago za nase namene predpostavimo da je stavek shranjen v spremenljivki z imenom speech na primer tako string speech four score and seven years ago enostaven del kode kak razbiti ta stavek v samostojne besede z uporabo stringtokenizer java razreda bi zgledal tako string speech four score and seven years ago stringtokenizer st new stringtokenizer speech while st hasmoretokens println st nexttoken v tem primeru je spremenljivka speech podana v stringtokenizer konstruktor metodo ker stringtokenizer nima vhodnega parametra v katerega bi podali locilec zapisa field separator s katerimi bi locili posamezne dele med sabo zato razred uporabi privzete locilce zapisa in predpostavlja da so zapisi loceni z belimi nevidnimi znaki to so presledki tabulatorji in prehodi v novo vrstico zatorej vsakic ko gremo skozi while zanko se izpise ena beseda podani izpis je potem four score and seven years ago while zanka vsakic tudi preveri ce je se kaj zetonov z metodo hasmoretokens razreda stringtokenizer v objektu st ce jih je se potem izvrsi stavek println kadar pa ni nic vec zetonov se while zanka preneha izvrsevati se eno pojasnilo preden bomo nadaljevali ce zelite preizkusiti ta primer morate priloziti java util paket to storite z naslednjo vrstico import java util v tem paketu je vsebovan tudi razred stringtokenizer primer uporabe tekstovne baze podatkovne datoteke v pravkar pokazanem primeru je bil tekst string razbit v vec zetonov seveda v anlgeskem jeziku mislimo na zetone kot na besede in te besede so ponavadi locene z belimi nevidnimi znaki tabulatorji presledki prehodni v novo vrstico v naslednjem primeru bomo pokazali kako razbiti podatkovni zapis ang database record ki je locen z dvopicji v zetone ki jim ponavadi pravimo polja fields naslednja dva zapisa sta iz hipoteticne podatkovne datoteke imenovane customer db ki vsebuje podatke o strankah vsak zapis vsebuje informacijo o stranki vkljucno z naslovom in je sestavljen iz imena priimka mesta in drzave strankinega naslova znotraj zapisa je vsako polje tu so polja ime priimek mesto in drzava strankinega naslova loceno z znakom za dvopicje primera dveh zapisov sta homer simpson springfield hank hill arlen texas recimo da smo prebrali prvi zapis to je homer simpson zapis v spremenljivko tipa string z imenom dbrecord ta zapis bi lahko razbili v stiri polja in jih izpisali na naslednji nacin assume 'dbrecord' is assigned the value of the first database record stringtokenizer st new stringtokenizer dbrecord string fname st nexttoken string lname st nexttoken string city st nexttoken string state st nexttoken println first name fname println last name lname println city city println state state v tem primeru predpostavimo da spremenljivka dbrecord ze vsebuje celoten prvi zapis iz nase podatkovne baze ker vemo da so zapisi loceni z dvopicjem bomo dolocili da naj bo locilec polj ang field separator to je znak s katerimi bomo razlocevali zetone med seboj znak za dvopicje potem bomo poklicali stringtokenizer konstruktor tako stringtokenizer st new stringtokenizer dbrecord ko smo napisali ta programski stavek je enostavno razbijati zapise v stiri zetone z uporabo metode nexttoken iz razreda stringtokenizer ki prebere naslednji zeton v zapisu ta tehnika je demonstrirana v celoti v izpisu kjer je celotna customer db baza podatkov prebrana zapis za zapisom in izpisana import java io import java util class tokentest public static void main string args tokentest tt new tokentest tt dbtest void dbtest datainputstream dis null string dbrecord null try file f new file customer db fileinputstream fis new fileinputstream f bufferedinputstream bis new bufferedinputstream fis dis new datainputstream bis read the first record of the database while dbrecord dis readline null stringtokenizer st new stringtokenizer dbrecord string fname st nexttoken string lname st nexttoken string city st nexttoken string state st nexttoken system out println first name fname system out println last name lname system out println city city system out println state state n catch ioexception e catch io errors from fileinputstream or readline system out println uh oh got an ioexception error e getmessage finally if the file opened okay make sure we close it if dis null try dis close catch ioexception ioe system out println ioexception error trying to close the file e getmessage end if end finally end dbtest end class ceprav prikazana koda ni dober primer objektno orientiranega stila programiranja ampak prikazuje naso tehniko razbiranja zapisov v polja z uporabo razreda stringtokenizer povzetek in izvorna koda ta enostavna metoda ki smo jo opisali je mocan nacin razbijanja nizov v zetone ce potrebujete bolj zahteven nacin razbiranja v zetone bi si lahko raje pogledali razred streamtokenizer razred streamtokenizer lahko prepozna razlicne stile komentarjev v programski kodi in ponuja veliko kontrolnih zastavic control flags ki jih lahko postavimo v razlicna stanja jim dolocimo razlicne vrednosti in na osnovi teh vrednosti se potem razbija string e v zetone ce zelite podatkovno datoteko customer db potem kliknite tukaj in na isti nacin kot v prejsnjem odstavku shranite to datoteko v vas sistem avtor kemal posedi