Ir al contenido


Foto

manejo de strings. 1a, 1b, 1c = 1abc


  • Por favor identifícate para responder
6 respuestas en este tema

#1 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 06 noviembre 2013 - 06:35

Hola amigos, Quisiera pedirles ayuda para realizar una función que convierta una cadena tal como describe el asunto.

Puede ser cualquier numero y cualquier cantidad de letras, por ejemplo: 7a, 7b, 7c, 7d resultaría en 7abcd
8x, 8y = 8xy
30a, 30d, 30m = 30adm
etc, etc...

Alguna idea? se los agradecería mucho.

Saludos.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 06 noviembre 2013 - 08:51

Hola

Que pasaría en éste supuesto caso:

7a, 8d, 30m = ????adm

o en éste:

7ab, 8dc, 30mx = ??????????

Saludos

  • 0

#3 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 06 noviembre 2013 - 08:56

Hola

Que pasaría en éste supuesto caso:

7a, 8d, 30m = ????adm

o en éste:

7ab, 8dc, 30mx = ??????????

Saludos


Hola y gracias por tu interés.. lo bueno es que no est taaaan complicado ya que éstos casos no se presentarían, el valor númerico siempre es el mismo, ya sea:
1a, 1b, 1c
37a, 37b
555x, 555y
etc...
lo que cambia es la letra (que es sólo un caracter despues del número)
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 06 noviembre 2013 - 09:07

Hola

A ver que tal



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   lista: TStrings;
  4.   Index: Integer;
  5.   cadena: string;
  6.  
  7. begin
  8.   lista := TStringList.Create;
  9.   Lista.CommaText := Edit1.Text;
  10.   cadena := copy(Lista[1],1, length(lista[1])-1);
  11.   for Index := 0 to Lista.Count - 1 do
  12.   begin
  13.     cadena := cadena + copy(Lista[ Index ], length(lista[ Index ]), 1);
  14.   end;
  15.   ShowMessage( cadena );
  16. end;



Claro,habrá mejores soluciones que ésta :)

Saludos

PD, espero tener tiempo hoy de agregar los TAGS,  :embarrassed:


  • 0

#5 Pratasvenska

Pratasvenska

    Member

  • Miembros
  • PipPip
  • 38 mensajes
  • LocationSuecia

Escrito 06 noviembre 2013 - 10:06

Hola

A ver que tal



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   lista: TStrings;
  4.   Index: Integer;
  5.   cadena: string;
  6.  
  7. begin
  8.   lista := TStringList.Create;
  9.   Lista.CommaText := Edit1.Text;
  10.   cadena := copy(Lista[1],1, length(lista[1])-1);
  11.   for Index := 0 to Lista.Count - 1 do
  12.   begin
  13.     cadena := cadena + copy(Lista[ Index ], length(lista[ Index ]), 1);
  14.   end;
  15.   ShowMessage( cadena );
  16. end;



Claro,habrá mejores soluciones que ésta :)

Saludos

PD, espero tener tiempo hoy de agregar los TAGS,  :embarrassed:


Gracias, lo voy a probar y te cuento. Aunque seguro que funciona :)

Saludos!
  • 0

#6 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 08 noviembre 2013 - 01:23

Buenas,

Ese código tiene "un problema", y es que supone que el dato numérico es de 1 dígito. Lo primero que se debería hacer es recorrer el string (Lista[1]) mirando cada posición para ver si es un número. En caso de ser número, ir concatenando los encontrados en otra variable cadena hasta llegar a la posición en que encontremos una letra. Ahora, con la longitud de la nueva cadena con sólo números ya puedes hacer el Copy correctamente

Saludos
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 08 noviembre 2013 - 08:44

Buenas,

Ese código tiene "un problema", y es que supone que el dato numérico es de 1 dígito. Lo primero que se debería hacer es recorrer el string (Lista[1]) mirando cada posición para ver si es un número. En caso de ser número, ir concatenando los encontrados en otra variable cadena hasta llegar a la posición en que encontremos una letra. Ahora, con la longitud de la nueva cadena con sólo números ya puedes hacer el Copy correctamente

Saludos


Este....... no amigo Xavi, al contrario, yo asumo que la letra siempre va a ser de un caracter y todo lo demás (a la izquierda) son números :)

Hola y gracias por tu interés.. lo bueno es que no est taaaan complicado ya que éstos casos no se presentarían, el valor númerico siempre es el mismo, ya sea:
1a, 1b, 1c
37a, 37b
555x, 555y
etc...
lo que cambia es la letra (que es sólo un caracter despues del número)


Saludos
  • 0




IP.Board spam blocked by CleanTalk.