Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como eliminar espacios en el centro de una cadena? (https://www.clubdelphi.com/foros/showthread.php?t=68388)

JoAnCa 10-06-2010 20:38:22

Como eliminar espacios en el centro de una cadena?
 
Hola a todos
Necesito hacer una funcion que me permita eliminar los espacios en blanco sobrantes en una cadena, pero los que se encuentran en el interior de la cadena, no al principio y al final, que se puede hacer con Trim

Pero tampoco me sirve con StringReplace, que me sustituiria todos los espacios existentes

Pues lo que quiero es que cuando haya mas de un espacio blanco, me deje solamente uno

Ejemplo:

Esto: 'algo de la cadena'

Lo convierta en esto: 'algo de la cadena'

espero haberme explicado

maeyanes 10-06-2010 21:17:19

Hola...

Así rápidamente se me ocurren dos formas, usando StringReplace:

Código Delphi [-]
// Buscamos dos espacios en blanco seguidos y lo reemplazamos por uno solo
// Inconveniente, solo funciona cuando son dos espacios en blanco seguidos...
Cadena := StringReplace(Cadena, '  ', ' ', [rfReplaceAll]);

o haciendo una función:

Código Delphi [-]
function RemoveBlanks(const Str: string): string;
var
  I: Integer;
  FirstBlank: Boolean;

begin
  Result := '';
  for I := 1 to Length(Str) do
  begin
    if Str[i] <> ' ' then
    begin
      Result := Result + Str[i];
      FirstBlank := True;
    end
    else
      if FirstBlank then
      begin
        FirstBlank := False;
        Result := Result + Str[i]
      end
  end
end;


Saludos...

gonzalo_enero 10-06-2010 22:28:49

Te doy una idea
 
1.- Create un método que te extraiga (cortar) la primer palabra de la cadena Principal..
2.- La guardas en una variable auxiliar
3.- Vuelves a buscar la Primer Palabra
__3.1.- Si la Hay concatenas espacio
__3.2.- Si no hay Salir Ciclo

S = "Hola___todo___Mundo"
aux = ""

S = "___todo___Mundo"
aux = "Hola"

S = "___Mundo"
aux = "Hola_todo"

S = ""
aux = "Hola_todo_Mundo"

S = aux

Recuerda que la variable auxiliar en el primer caso no agregas el espacio :-)

es muy importante que estos ejercicos lo resuelvas por tu propia cuenta, solo te doy una pauta ya que para algoritmos como analex debes dominar estos conceptos

Espero haber podido ayudarte :-)

JoAnCa 10-06-2010 22:50:57

Muchas gracias maeyanes, esa funcion me sirvio de maravilla ;)

Con ella solucione el problema

JoAnCa 10-06-2010 22:53:57

Cita:

Empezado por gonzalo_enero (Mensaje 366913)
1.- Create un método que te extraiga (cortar) la primer palabra de la cadena Principal..
2.- La guardas en una variable auxiliar
3.- Vuelves a buscar la Primer Palabra
__3.1.- Si la Hay concatenas espacio
__3.2.- Si no hay Salir Ciclo

S = "Hola___todo___Mundo"
aux = ""

S = "___todo___Mundo"
aux = "Hola"

S = "___Mundo"
aux = "Hola_todo"

S = ""
aux = "Hola_todo_Mundo"

S = aux

Recuerda que la variable auxiliar en el primer caso no agregas el espacio :-)

es muy importante que estos ejercicos lo resuelvas por tu propia cuenta, solo te doy una pauta ya que para algoritmos como analex debes dominar estos conceptos

Espero haber podido ayudarte :-)

Tambien es valido este algoritmo, la forma de implementarlo no es compleja, tambien me sirve

Muchas gracias


La franja horaria es GMT +2. Ahora son las 00:18:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi