PDA

Ver la Versión Completa : Dividir un AnsiString en varios ( como split en C# )


JuanErasmo
24-08-2007, 06:54:36
Hola amigos, mi problema es algo sencillo, pero no he sabido como hacer.
Tengo este AnsiString :

juanerasmo\\trabajo\\00010\\00111 y necestio sacar de ahi, por ejemplojuanerasmo\\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:
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 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:
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
st=st.SubString(i+1,st.Length()-i));
(la primera si estaba bien)

Saludos