manejo de Cadenas

28/07/2005 - 16:28 por Arturo | Informe spam
Hola a todos, espero que esten bien, en esta ocasion les
pido su ayuda para que me digan que instrucciones puedo
usar para alterar una cadena, los pongo el ejemplo de lo
que quiero:
char cadena[]="(RANCHO, EL)"
Esto al final debe quedar: char cadena[]="(EL RANCHO)"
pero solamente debe ocurrir cuando las palabras despues de
la coma sea: EL, LOS, LA, LAS. En caso de que yo envie:
(TECOLOTES, EJIDO CAMPECHE) no debe hacer nada; en si
siempre que haya un articulo despues de la coma lo haga,
¿Me pueden decir como le hago por favor? Si tiene un
codigo mejor porque apenas estoy aprendiendo C++. De
antemano muchas gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
28/07/2005 - 16:57 | Informe spam
Sin duda este es un trabajo que se hacer muy bien usando regular expresions.
El problema se reduce a encontrar la regular expresion adecuada (the
regulator es una aplicación que puede ayudarte) y utilizar CAtlRegExp o the
boost's regex++ library.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Arturo
28/07/2005 - 18:30 | Informe spam
Ok gracias pero dime como se usan donde las encuentro por
favor.
Sin duda este es un trabajo que se hacer muy bien usando


regular expresions.
El problema se reduce a encontrar la regular expresion


adecuada (the
regulator es una aplicación que puede ayudarte) y


utilizar CAtlRegExp o the
boost's regex++ library.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org


.

Respuesta Responder a este mensaje
#3 Rodrigo Corral [MVP]
28/07/2005 - 18:46 | Informe spam
Usar expresiones regulares no es algo que se aprenda en dos cuartos de hora
o se explique en dos lineas. Pero vamos con un poco de interes y googleando
no tendrás problemas.

De todos modos intentare ver si puedo hacerte algo de código aunque no puedo
prometerte nada.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#4 Arturo
28/07/2005 - 19:07 | Informe spam
Aqui en c funciona el substr? para poder tomar un
segemento de cadena? y con que libreria funciona y como se
declara?
Respuesta Responder a este mensaje
#5 Willser F. González C.
28/07/2005 - 21:45 | Informe spam
Cuántas comas (,) podría llegar a tener una cadena?; si es sólo una, sería
que buscara la primer coma coincidente, esta búsqueda le devuelve la
posición donde la encontró, entonces, con base en esa posición se puede
sustraer la subcadena de la izquierda y la de la derecha, esas dos
subcadenas las concatena nuevamente pero en orden inverso y listo, ya está.
Claro que antes de hacer esta concatenación hay que hacer un ciclo para que
se determine si la segunda subcadena (la de la derecha) corresponde a un
artículo.

Algo así como:

main()
{
char l_vvcArticulos[4][4] = {"EL", "LA", "LOS", "LAS"};

char l_vcCadenaInicial[30] = "(RANCHO, EL)";

char l_vcSubCadenaDer[30]; // SubCadena después de la coma
(,).

char l_vcCadenaFinal[30];

char *l_pcPosicionComa = NULL;

unsigned int i, l_iPosicionArticulo = 0;


l_pcPosicionComa = strchr(l_vcCadenaInicial, ','); // Buscar la coma.

l_iPosicionArticulo = l_pcPosicionComa - l_vcCadenaInicial + 2;

if ((l_pcPosicionComa != NULL) &&
(l_iPosicionComa < strlen(l_vcCadenaInicial))) // Coma encontrada.
{
strcpy(l_vcSubCadenaDer, l_vcCadenaInicial + l_iPosicionArticulo);
// Extrae subcadena derecha.

if (l_vcSubCadenaDer[strlen(l_vcSubCadenaDer) - 1] == ')') //
Eliminar el paréntesis.
{
l_vcSubCadenaDer[strlen(l_vcSubCadenaDer) - 1] = 0;

_strupr(l_vcSubCadenaDer); // Convertir a mayúscula por si
acaso.
}

for (i = 0; i < 4; i++) // Para cada artículo.
if (strcmp(l_vcSubCadenaDer, l_vvcArticulos[i]) == 0) // Es un
artículo.
break;

if (i < 4) // Es un artículo.
{
strcpy(l_vcCadenaFinal, "(");
strcat(l_vcCadenaFinal + 1, l_vcSubCadenaDer);
strcat(l_vcCadenaFinal, " ");
strncat(l_vcCadenaFinal, l_vcCadenaInicial + 1,
l_pcPosicionComa - l_vcCadenaInicial - 1);

strcat(l_vcCadenaFinal, ")"); // Aquí queda la cadena final
con el artículo al principio.
}
}
}


Willser F.



"Arturo" escribió en el mensaje
news:006e01c59380$a4d5a910$
Hola a todos, espero que esten bien, en esta ocasion les
pido su ayuda para que me digan que instrucciones puedo
usar para alterar una cadena, los pongo el ejemplo de lo
que quiero:
char cadena[]="(RANCHO, EL)"
Esto al final debe quedar: char cadena[]="(EL RANCHO)"
pero solamente debe ocurrir cuando las palabras despues de
la coma sea: EL, LOS, LA, LAS. En caso de que yo envie:
(TECOLOTES, EJIDO CAMPECHE) no debe hacer nada; en si
siempre que haya un articulo despues de la coma lo haga,
¿Me pueden decir como le hago por favor? Si tiene un
codigo mejor porque apenas estoy aprendiendo C++. De
antemano muchas gracias anticipadas.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida