|
Microsoft Office - Razno |
|
|
Kako podeliti stringNivo:
U poslednjih nekoliko meseci, više puta sam imao potrebu da se bavim parsiranjem stringova u Excelu i Wordu. VBA makroi koje sam pisao sadržali su razne algoritme prepoznavanja karakterističnih mesta u tekstualnim zapisima, na osnovu čega bi bile izveden određene operacije. Prilično česta pojava u takvim prilikama je potreba deobe nekog zapisa na više elementarnih, poput slučaja kad se u jednom redu nalazi zapis koji treba podeliti u više ćelija neke tabele. Postoji više rešenja tog problema i sva ona zavise od toga kako izgledaju polazni podaci: čest je slučaj da morate sami pronaći neki algoritam podele. Ukoliko u procesu povezivanja možete da utičete na oblik podataka na polazištu, preporučiću vam jednu vrlo primerenu metodu: definišite neki prepoznatljivi znak koji će sigurno biti jedinstven (ne koristi se nigde u tekstu), postavite ga između podataka kao obeležje za razgraničavanje (delimiter), pa upotrebite način za razdvajanje stringa na više njih koji vidite u jednostavnom primeru u listingu. Funkcija Split deluje veoma lako: zadajete polazni string i znak koji služi kao delimiter; rezultat je niz u kome članovi sadrže delove teksta, a delimiter je odbačen. Prikladan efekat je u tome što ne morate unapred znati koliko članova niz ima, a članovi dužine nula neće biti ignorisani. Tek da pomenem usput: funkcija Join radi posao sa suprotnim dejstvom; proverite njeno dejstvo pokretanjem primera. Iskoristiću priliku i da vam ukažem pažnju na zamku na koju možete naići kada radite sa nizovima: ukoliko na vrhu modula ne koristite deklaraciju Option Base {0|1} (ovo poslednje znači "nula ili jedan"), podrazumevaće se da n članova niza imaju indekse u opsegu [0,n-1]; jedinica znači da opseg čine brojevi [1,n]. Ako razmenjujete makroe sa drugima, pa dođe do kolizije u ovim deklaracijama, možete izazvati grešku u raznim petljama. Da biste to izbegli, primenite trik koji sam primenio u klauzuli For u primeru: umesto da napišem For i = 0 To n (usput - ne znam kolika je vrednost n, to bih morao da ispitujem), upotrebio sam funkcije LBound i UBound, koje mi vraćaju granične vrednosti indeksa niza delovi. Sub podela() ' uočite prazno mesto ' između "dva" i "tri"! tekst = "jedan#dva##tri#četiri" ' rastavljanje: ' string se cepa u niz delovi = Split(tekst, "#") ' uočite način brojanja u nizu! For i = LBound(delovi) To UBound(delovi) MsgBox delovi(i) Next ' sastavljanje: ' niz se prebacuje u jedan string celo = Join(delovi, "@") MsgBox celo End Sub
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana. |