Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Dividir un AnsiString en varios ( como split en C# ) (https://www.clubdelphi.com/foros/showthread.php?t=47318)

JuanErasmo 24-08-2007 06:54:36

Dividir un AnsiString en varios ( como split en C# )
 
Hola amigos, mi problema es algo sencillo, pero no he sabido como hacer.
Tengo este AnsiString :

Código:

juanerasmo\\trabajo\\00010\\00111
y necestio sacar de ahi, por ejemplo
Código:

juanerasmo\\trabajo\\00010
y no se como,,,,
alguien sabe como???
Gracias.

AntonioG 24-08-2007 17:25:14

Hola,

Debes usar los metodos Pos y Substring del AnsiString.

En tu ejemplo, si siempre hay cuatro cadenas separadas por \\, entonces puedes hacer esto para obtenerr las cuatro cadenas:
Código Delphi [-]
AnsiString s,s1,s2,s3,s4,st;
int i;
s="juanerasmo\\trabajo\\00010\\00111"; //<--aqui esta la cadena que quieres separar
i=s.Pos("\\");
s1=s.SubString(1,i-1);
st=s.SubString(i+1,s.Length()-i);//<--en st voy a ir guardando el resto de s que no he separado
i=st.Pos("\\");
s2=st.SubString(1,i-1);
st=st.SubString(i+1,s.Length()-(i+1));
i=st.Pos("\\");

s3=st.SubString(1,i-1);
st=st.SubString(i+1,s.Length()-(i+1));
s4=st;

en s1,s2,s3 y s4 quedan las cuatro partes de la cadena, s es donde esta la cadena de entrada y st es una cadena que se usa a manera de temporal.

Saludos

JuanErasmo 24-08-2007 21:54:30

Muchas Gracias!!!
 
Muchas Gracias AntonioG!

Perfecto!

Estaba un poco confundido con lo que hacia, AnsiPos, Delete, y otras funciones con las que intente hacer esto,
pero tu lo hiciste de la forma mas inteligente! tienes la mejor solucion!

Gracias!

AntonioG 25-08-2007 05:40:23

Hola,

Por cierto que tengo mal el segundo parametro en estas lineas:
Código Delphi [-]
st=st.SubString(i+1,s.Length()-(i+1));

\menos en la priemra, pero no importo porque el numero era mas grande que lo que habia en al cadena.

Creo que deberia ir
Código Delphi [-]
st=st.SubString(i+1,st.Length()-i));
(la primera si estaba bien)

Saludos


La franja horaria es GMT +2. Ahora son las 18:25:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi