Eliminar un carácter concreto de un AnsiString

Kj
27 de Marzo del 2004
Tengo un AnsiString que puede tomar valores del estilo:

"Tommy\'s Dog"

y me gustaría que siempre que se encontrase una comilla simple (\') la eliminara. Quedando así:

"Tommys Dog"

¿Alguna idea de como hacerlo?

Alejandro_
27 de Marzo del 2004
Hola,

ya que el tipo AnsiString es exclusivo del Builder, es muy probable que consigas una mejor respuesta en algún foro más específico, pero mientras tanto...

Un AnsiString tiene el método Pos, que te permite conocer la posición de una subcadena dentro de una cadena (También está AnsiPos para Unicode). Entonces, si sabes la posición de tu \' podrás eliminarlo:

AnsiString cadena = ""Tommy\'s Dog"";

int pos = cadena.Pos("\'");
if(pos) {
// borra un caracter desde pos:
cadena = cadena.Delete(pos, 1);
}

En lo personal, yo no pondría mucha energía en aprender a usar una herramienta que ya tiene sentencia de muerte dictada, así que en lugar de AnsiString quizás sea más económico aprender a usar la string de la biblioteca estándar del C++. Digo no más, como sugerencia.

Alejandro

patitofeo
27 de Marzo del 2004
el string tendra una forma del estilo:

char *frase
o
char frase[]

puedes probar:

char* frase_t1;
char* frase_t2;

.........

frase_t1=frase;

while(*frase_t1)
{
if(*frase_t1==' \' ')
{
frase_t2=frase_t1;
while(*frase_t2)
{
*frase_t2=*(frase_t2+1);
frase_t2++;
}
}
frase_t1++;
}


prueba eso. Si tienes alguna duda dime.

chao.
espero que te sirva.