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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.