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 tabeli, a Asc() konvertuje prvi simbol u stringu u kod po ASCII 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.