Stringovi String je u Clipper-u proizvoljan niz simbola. Moze biti dugacak do 64K. String se piže kao niz simbola izmedju navodnika ili apostrofa: String := "Ovo je string" specSym := '!#%"&' FORMATIRANJE Tc(), Tf(), Tk() -> Formatiranje brojeva po definiciji formata Str(n, l, d) -> Konvertuje broj u string dužine L i sa D decimala Str(123, 10, 2) = " 123.00" Val(s) -> Konvertuje string u numeričku vrednost Val("123") = 123 Left(s, l) -> Prvih L simbola stringa S Left("Abeceda", 3) = "Abe" Right(s, l) -> Zadnjih L simbola stringa S Right("Abeceda", 3) = "eda" SubStr(s,p,l) -> Deo stringa S od pozicije P, ducine L SubStr("Abeceda", 3,2) = "ec" LTrim(s) -> String S bez vodećih blanko simbola LTrim(" 123 ") = "123 " RTrim(s) -> String S bez blanko simbola na kraju RTrim(" 123 ") = " 123" AllTrim (s) -> String S bez vodećih i krajnjih blanko simbola AllTrim(" 123 ") = "123" Trim(s) -> String S bez blanko simbola na kraju Trim(" 123 ") = " 123" PadL(s, l) -> Popunjava string S sa L blanko znakova sleva PadL("ABC", 10) = " ABC" PadR(s, l) -> Popunjava string S sa L blanko znakova sdesna PadR("ABC", 10) = "ABC " PadC(s, l) -> Popunjava string S sa L blanko znakova centrirano PadC("ABC", 10) = " ABC " Pad(s, l, c) -> Popunjava string S sa L znakova C sdesna Pad("ABC", 10, "*") = "ABC*****" At (s1, s2) -> Pozicija stringa S1 u stringu S2 At(";", "Abce;da") = 5 Len (s) -> Dužina (broj simbola) stringa S Len("Abeceda") = 7 Replicate(c, n) -> Kreira string od N znakova C Replicate(“*”, 5) = "*****" Space(n) -> Kreira string od N blanko znakova Space(5) = " " StrTran(s, x, y) -> Menja u stringu S sva pojavljivanja X u Y StrTran("Abeceda", "e", "--") = "Ab--c--da" GetV(@cString, cDelimiter) -> Učitavanje stringa do delimitera. Pri tom se menja i originalni string. c := "Ovo je primer" x := GetV (@c, " ") // "Ovo" ? c // "je primer" Za stringove su najvažniji operatori spajanja (konkatenacije). Operator + oznacava normalno spajanje, a - spajanje bez blanko simbola na kraju prvog operanda. Na primer: x := "ABC " y := "DE" s1 := x + y // s1 == "ABC DE" s2 := x - y // s2 == "ABCDE" Za stringove je vezan jedan važan relacioni operator: $ (podstring). Pomoću njega se ispituje da li je string sadrzan u nekom drugom: "ABC" $ "ABCDEF" --> TACNO "aBC" $ "ABCD" --> NETACNO "%" $ "x % y" --> TACNO Veza izmedju celih brojeva i stringova je uobicajena funkcija Chr() konvertuje dati ceo broj u odgovarajući simbol po ASCII (American Standard Code for Information Interchange) tabeli, a Asc() konvertuje prvi simbol u stringu u kod po ASCII (American Standard Code for Information Interchange) tabeli TRANSFORM Postoji joŠ jedna veoma vaŽna funkcija koja omoguĆava formatiranje podataka proizvoljnog tipa: funkcija Transform(). Ova funkcija podatak iz bilo kog tipa pretvara u string, sliČno kao Što funkcija Str() pretvara brojeve u stringove. Medjutim, Transform ima daleko veće mogućnosti. Prvo, prihvata i ostale tipove podataka, a ne samo brojeve; drugo, omogućava daleko precizniju kontrolu onoga žto se dobija kao rezultat. Transform funkcija se kontroliše na dva načina: preko stringova za formatiranje i funkcija za formatiranje. Stringovi za formatiranje služe za operacije nad simbolima ulazne vrednosti. String za formatiranje je, u stvari, niz simbola od kojih neki imaju specijalno značenje. Na primer, simbol “9” u format stringu označava cifru. Ulaz se “uparuje” sa format stringom i na osnovu toga se pravi izlaz. Na primer: ? Transform (12345, "999,999") -> "12,345" Clipper podržava još specijalnih simbola: A,N,X,9,# - Označava jedan simbol ulaznog podatka. Rezultat zavisi od tipa ulazne vrednosti L - Prikazuje logički podatak kao T ili F Y - Prikazuje logički podatak kao Y ili N ! - Konvertuje slovo u odgovarajuće veliko $ - Prikazuje $ umesto vodećih nula u broju * - Prikazuje * umesto vodećih nula u broju . - Određuje decimalnu tačku , - Zarez Evo nekih primera upotrebe prethodnih specijalnih simbola: Transform(1234.56, "999,999.-") -> 12,34.- Transform(1234, "$$$$$$") -> $$1234 Transform(1234, "***/***") -> **1/234 Transform(-1234, "######") -> -1234 Transform("abcdef", "A=A=A") -> a=c=e Kao što se vidi u poslednjem primeru, kada se formatira string, simbol u formatu koji nije specijalan jednostavno “prekrije” odgovarajući ulazni simbol. Drugi način formatiranja je preko funkcija za formatiranje. Funkcije za formatiranje deluju na celu ulaznu vrednost, a ne pojedinačno na simbole. Zadaje se takođe u okviru stringa za formatiranje, samo što se pre kodova funkcija nalazi simbol @. Na primer, da bi se sva slova u ulaznom stringu konvertovala u velika, zadaje se sledeća naredba: ? Transform("abcdef", "@!") Funkcija Transform raspoznaje sledeće kodove - oznake funkcija za formatiranje: B - Broj poravnava u levo C - Prikazuje CR posle pozitivnog broja D - Prikazuje datum u tekućem formatu E - Prikazuje datum u evropskom formatu; kod brojeva zamenjuje tačku i zarez kao delimitere (brojevi se prikazuju u formatu 999.999,99) R - Simboli bez značenja u stringu za formatiranje ne brišu ulazne, već se ubacuju izmedju X - Prikazuje DB posle negativnog broja Z - Prikazuje nule kao blanko simbole ( - Zatvara negativne brojeve u zagrade ) - Zatvara negativne brojeve u zagrade bez vodećih blanko simbola ! - Sva slova konvertuje u velika Posle oznake za format funkciju (@), mogu se odjednom navesti i više kodova za funkcije. Na primer, string ”@BC” označava da broj treba poravnati u levo i da na kraju treba ispisati CR ako je broj pozitivan. Ponekad je potrebno kombinovati funkcije i simbole za formatiranje i tada treba prvo pisati funkcije, a onda simbole, posle jednog blanko simbola. Na primer Transform (cResult, "@! AA-AAA/AAA") Pri tome treba imati na umu da funkcije za formatiranje imaju prednost nad simbolima.