/* */

5 de octubre de 2007

untString.pas

.
untString.pas

   1:
2:unit untString;
3:
4:interface
5: // retorna la posicion de la primer ocurrencia
6: // del caracter c dentro del string s.
7: // Si s no contiene ningun caracter c entonces
8: // retorna un valor negativo
9: function indexOf(s: string; c :char): integer;
10:
11: // retorna la posicion de la primer ocurrencia
12: // del caracter c dentro del string s contando
13: // a partir del caracter offset.
14: // Si s no contiene ningun caracter c entonces
15: // retorna un valor negativo
16: function indexOf(s: string
17: ;c: char
18: ;offset: integer): integer;
19:
20: // retorna la posicion de la ultima ocurrencia
21: // del caracter c dentro del string s
22: // Si s no contiene ningun caracter c entonces
23: // retorna un valor negativo
24: function lastIndexOf(s: string;c: char): integer;
25:
26: // retorna la subcadena de s comprendida entre
27: // los caracteres cuyas posiciones son
28: // desde (inclusive) y hasta (no inclusive)
29: function substring(s:string;
30: desde,hasta: integer): string;
31:
32: // retorna la subcadena de s comprendida entre el
33: // caracter desde y el ultimo caracter. Es decir:
34: // desde desde hasta el ultimo
35: function substring(s:string
36: ;desde: integer): string;
37:
38: // retorna un string compuesto por n caracteres c
39: function replicate(c: char; n: integer): string;
40:
41: // retorna un string compuesto por n-length(s)
42: // caracteres c y luego s. Si n<=length(s)
43: // retorna s;
44: function lpad(s: string
45: ;c: char
46: ;n: integer): string;
47:
48: // idem lpad pero generando los caracteres
49: // a la derecha
50: function rpad(s: string
51: ;c: char
52: ;n: integer): string;
53:
54: // idem lpad y cpad pero generando la mitad de
55: // los caracteres a la izquierda y la otra mitad
56: // a la derecha
57: function cpad(s: string
58: ;c: char
59: ;n: integer): string;
60:
61: // elimina los blancos que tenga el string s
62: // a la izquieda
63: function ltrim(s: string): string;
64:
65: // elimina los blancos que tenga el string s
66: // a la derecha
67: function rtrim(s: string): string;
68:
69: // elimina los blancos que tenga el string s
70: // a ambos lados, es el ltrim(rtrim(s))
71: function ctrim(s: string): string;
72:
73: // retorna true si s es vacio (''), o false
74: // si tiene al menos algun caracter
75: function isEmpty(s:string):boolean;
76:
77: // retorna un string como s pero en mayuscula
78: function toUpperCase(s:string):string;
79:
80: // retorna un string como s pero en muniscula
81: function toLowerCase(s:string):string;
82:
83: // considera al string s como varios strings
84: // separados por el separador sep permitiendo
85: // iterarlo y obtener cada token (substring entre
86: // sep y sep) contenido en s
87: function tokenizer(s:string
88: ;sep:char
89: ;var buff:string
90: ;var offset:integer):boolean;
91:
92: // cuenta la cantidad de tokens contenidos en s
93: function tokenCount(s:string;sep:char): integer;
94:
95: // retorna el token que se encuentra
96: // en la posicion i
97: function tokenAt(s:string
98: ;sep:char;i:integer): string;
99:
100:
101:
102:implementation
103:
104:
105:function isEmpty(s:string):boolean;
106:begin
107: isEmpty:=length(s)=0;
108:end;
109:
110:function tokenAt(s:string;sep:char;i:integer):string;
111:var x:integer; offset:integer; buff:string;
112:begin
113: offset:=1;
114: for x:=1 to i do begin
115: tokenizer(s,sep,buff,offset);
116: end;
117: tokenAt:=buff;
118:end;
119:
120:function tokenCount(s:string;sep: char): integer;
121:var i,n,cont:integer;
122:begin
123: n:=length(s);
124: i:=0;
125: cont:=1;
126: while( i<=n ) do begin
127: if( s[i]=sep ) then begin
128: cont:=cont+1;
129: end;
130: i:=i+1;
131: end;
132:
133: tokenCount:=cont;
134:end;
135:
136:
137:function indexOf(s:string; c:char): integer;
138:begin
139: indexOf:=indexOf(s,c,1);
140:end;
141:
142:function indexOf(s:string; c:char
143: ;offset:integer): integer;
144:var i: integer;
145:begin
146: i:=offset;
147: while( (i<=length(s)) AND (s[i]<>c) ) do begin
148: i:=i+1;
149: end;
150:
151: if( i<=length(s) ) then begin
152: indexOf:=i;
153: end else begin
154: indexOf:=-1;
155: end;
156:end;
157:
158:function lastIndexOf(s:string;c:char):integer;
159:var i:integer;
160:begin
161: i:=length(s);
162: while( (i>=1 ) AND (s[i]<>c) ) do begin
163: i:=i-1;
164: end;
165:
166: if( i>0 ) then begin
167: lastIndexOf:=i;
168: end else begin
169: lastIndexOf:=-1;
170: end;
171:end;
172:
173:function substring(s:string
174: ;desde,hasta:integer):string;
175:begin
176: substring:=copy(s,desde, hasta-desde);
177:end;
178:
179:function substring(s:string; desde: integer): string;
180:begin
181: substring:=substring(s,desde,length(s)+1);
182:end;
183:
184:
185:// esto|es|una|prueba
186:function tokenizer(s:string; sep: char
187: ;var buff: string
188: ;var offset:integer):boolean;
189:var desde,hasta:integer;
190:begin
191: if( offset>length(s) ) then begin
192: tokenizer:=false;
193: exit;
194: end;
195:
196: desde:=offset;
197: hasta:=indexOf(s,sep,desde);
198:
199: if( hasta<0 ) then begin
200: hasta:=length(s)+1;
201: end;
202:
203: offset:=hasta+1;
204:
205: buff:=substring(s,desde,hasta);
206: tokenizer:=true;
207:
208:end;
209:
210:function replicate(c:char; n:integer):string;
211:var aux:string; i:integer;
212:begin
213: aux:='';
214: for i:=1 to n do begin
215: aux:=aux+c;
216: end;
217: replicate:=aux;
218:end;
219:
220:function lpad(s:string; c:char; n:integer):string;
221:var len:integer;
222:begin
223: len:=length(s);
224: if( n<=len ) then begin
225: lpad:=s;
226: end else begin
227: lpad:=replicate(c,n-len)+s;
228: end;
229:end;
230:
231:function rpad(s:string; c:char; n:integer):string;
232:var len:integer;
233:begin
234: len:=length(s);
235: if( n<=len ) then begin
236: rpad:=s;
237: end else begin
238: rpad:=s+replicate(c,n-len);
239: end;
240:end;
241:
242:function cpad(s:string; c:char; n:integer):string;
243:var len,izq,der:integer;
244:begin
245: len:=length(s);
246: if( n<=len ) then begin
247: cpad:=s;
248: end else begin
249: izq:=(n-len) div 2;
250: der:=(n-len)-izq;
251: cpad:=replicate(c,izq)+s+replicate(c,der);
252: end;
253:end;
254:
255:function ltrim(s:string):string;
256:var i:integer;
257:begin
258: i:=1;
259: while( (i<=length(s)) AND (s[i]=' ') ) do begin
260: i:=i+1;
261: end;
262:
263: if( i>length(s) ) then begin
264: ltrim:=s;
265: end else begin
266: ltrim:=substring(s,i,length(s)+1);
267: end;
268:end;
269:
270:function rtrim(s:string):string;
271:var i:integer;
272:begin
273: i:=length(s);
274: while( (i>0 ) AND (s[i]=' ') ) do begin
275: i:=i-1;
276: end;
277:
278: if( i<=0 ) then begin
279: rtrim:=s;
280: end else begin
281: rtrim:=substring(s,1,i+1);
282: end;
283:end;
284:
285:function ctrim(s:string):string;
286:begin
287: ctrim:=ltrim(rtrim(s));
288:end;
289:
290:function toUpperCase(s:string):string;
291:begin
292: toUpperCase:=upCase(s);
293:end;
294:
295:function toLowerCase(s:string):string;
296:begin
297: toLowerCase:=lowerCase(s);
298:end;
299:
300:end.
301:






.