PDA

Ver la Versión Completa : Cadena de texto


gdlrinfo
24-10-2014, 22:21:17
Hola amigos tengo la siguiente duda a ver si me pueden dar una mano:

Necesito recorrer una cadena como esta "BBBB-C0000754T20130517" (puede variar el tamaño) y que cuando llegue a "T" me copie los siguientes 8 caracteres lo que a mi se me ocurrió fue lo siguiente pero claro no puedo volver a incrementar I porque me la toma como un loop:


Var
str, str2:string;
I, a:integer;
begin
str:='BBBB-C0000754T20130517';
str2:'';
for I := 1 to Length(str) do
If str[i]= 't' Then
for a:=1 to 8 do
begin
str2:= str2+str[i];
end;
end;

Al no poder volver a incrementar "I" lo que hace me pone 8 t jajajaj y ahí me quede la verdad esto de los caracteres nunca le di mucha importancia y hoy los estoy usando bastante desde ya muchas gracias !!!

duilioisola
24-10-2014, 23:15:38
Utiliza bucles while y maneja el contador a mano, según te convenga

Var
str, str2:string;
I, a:integer;
begin
str := 'BBBB-C0000754T20130517';
str2 := '';
i := 1;
// Recorro la cadena
while (i < length(str)) do
begin
// Si encuentro T
if (str[i] = 'T') then
begin
// establezco la posicion final. 8 caracteres despues del que estoy
a := i + 8;
// recorro hasta llegar al octavo caracter
while (i < a) do
begin
str2 := str2 + str[i];
i := i + 1;
end;
end;
i := i + 1;
end;
end;

ecfisa
24-10-2014, 23:39:34
Hola gdIrinfo.
Hola amigos tengo la siguiente duda a ver si me pueden dar una mano:

Necesito recorrer una cadena como esta "BBBB-C0000754T20130517" (puede variar el tamaño) y que cuando llegue a "T" me copie los siguientes 8 caracteres
...
Si queres extraer los ocho caracteres siguientes a la primera ocurrencia de la letra 'T'/'t', otra opción es:

function EightAfterT(const cad: string): string;
begin
Result:= Copy(UpperCase(cad), Pos('T', UpperCase(cad))+1, 8);
end;


Llamada ej.:

ShowMessage(EightAfterT('BBBB-C0000754T20130517'));


Saludos :)

gdlrinfo
25-10-2014, 00:16:41
Pruebo y comento gracias!!!!