PDA

Ver la Versión Completa : Funcion para buscar cadena dentro de otra cadena y el numero de veces


flystar
02-07-2007, 22:31:22
Buenos Días:

Alguien conoce alguna funcion que sirva para buscar una cadena dentro de ota cadena y que mencione la cantidad de veces que aparece?

La funcion POS solo sirve para encontrar la primera cadena pero no sirve para que encuentre si hay mas.

POr ejemplo en la frase "El perro es veloz, pero tambien el perro muerde"
La subcadena "perro" aparece 2 veces y a partir de la posicion 4 y la posicion 36 aproximadamente, entonces en esa caso la funcion deberia decirme cuantas veces aparece esa cadena y sus posiciones.
Gracias. :(

gabrielkc
02-07-2007, 22:38:33
function countstrings(Cadena:string;Buscar:string):Integer;
begin
// Opcional si no quieres que sea Case Sencitive
Cadena:=UpperCase(Cadena);
Buscar:=UpperCase(Buscar);
Result:=0;
while Pos(Buscar,Cadena)<>0 do
begin
Result:=Result+1;
Delete(Cadena,1,Pos(Buscar,Cadena)+Length(Buscar));
end
end;

Enan0
02-07-2007, 22:41:57
Bueno aca te dejo una pequeña funcion que escribi.. con esto deberia funcionar, a simple vista lo hace.
Como veras el texto deberia entrar como parametro y ser asinado a la variable S y 'perro' deberias parametrizarlo para poder buscar cualquier cosa.
de todas maneras fijate si funciona bien


var I,n:Integer;
s:string;
begin
n:=0;
i:=pos(s,'perro');
while i>0 do begin
inc(n);
delete(s,1,i+length('perro'));
i:=pos(s,'perro');
end;
end;



Jajajaja creo que tarde mucho en escribirla :D jejejje

flystar
02-07-2007, 22:48:08
Gracias por tu apoyo