Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema al remplazar una substring dentro de una string (https://www.clubdelphi.com/foros/showthread.php?t=61839)

gulder 24-11-2008 17:47:39

Problema al remplazar una substring dentro de una string
 
Hola foro como andan espero que bien bueno tengo rato de estar tirándole al siguiente problema y me decidí a compartirlos con ustedes para ver si me ayudan a darle por que sinceramente no he podido:

Tengo en un memo un texto el cual contiene un código BBCODE lo que quiero hacer es remplazar un código BBCODE específico por otro, me explico mejor tengo lo siguiente en un Memo:






Lo quiero cambiar por el siguiente ósea cambiarlo directamente en el texto del memo por este otro BBCODE

Ose que lo que esta dentro del memo quedaría de la siguiente forma



Lo he intentado hacer de la siguiente forma


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);

function PrimeraOcurrencia(Cadena, Esto, Por: String): String;
  var 
    aPos: Integer;
  begin 
      aPos := Pos(Esto, Cadena);
      Result:= '';

        Result := Result + Copy(Cadena, 1, aPos-1) + Por;
        Delete(Cadena, 1, aPos + Length(Esto)-1);

      Result := Result+Cadena;
  end; 

begin

 Memo1.Text:=PrimeraOcurrencia(Memo1.Text , '[SIZE="' , '[size=' );
 Memo1.Text:=PrimeraOcurrencia(Memo1.Text , '"]' , ']' );

end;


imagen que muestra el memo antes de aplizarle la funcion PrimeraOcurrencia



imagen que muestra el memo despues de aplizarle la funcion PrimeraOcurrencia



se pueden dar cuenta del error que tengo, lo que pasa es que me toca cambiarlo asi como lo planteo en la funcion PrimeraOcurrencia por que el numero que esta dentro del size puede variar y solo quiero que me modifique la informcaion del size no todo los bbcode que contengan el string "] bueno espero que me hayan entendido de todas formas estare aqui pendiente de alguna pregunta

NOTA: me toco colocarlo con imágenes por que si escribo las etiquetas bbcode el foro las interpretaba y no podía haberles explicado

Lepe 24-11-2008 19:23:35

Creo que el "Delete" te está borrando la comilla después del 4, es decir 4"], por eso después la primera ocurrencia que encuentra es la del color.

Caro 24-11-2008 19:51:24

Hola, también puedes utilizar la función StringReplace.

Código Delphi [-]
 Memo1.Text := StringReplace(Memo1.Text, '[SIZE=' , '[size=',[rfReplaceAll]);
 Memo1.Text := StringReplace(Memo1.Text, 'SIZE]' , 'size]',[rfReplaceAll]);
 Memo1.Text := StringReplace(Memo1.Text, '"' , '',[rfReplaceAll]);

Saluditos


La franja horaria es GMT +2. Ahora son las 11:15:55.

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