Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Eliminar caracteres y numeros (https://www.clubdelphi.com/foros/showthread.php?t=94548)

igamerpc 27-03-2020 12:22:55

Eliminar caracteres y numeros
 
Buenos dias:



El programa Delphi:


Como eliminar provincias ejemplo


(130) Betanzos (A Coruña)
(131) Betanzos 2 (A Coruña)


eso los primeros de parentesis (130) (131) eso eliminar.


con delete cadena no funciono.


Hay muchos codigos pero cual eso que funcione Split no creo que funcione.

Casimiro Notevi 27-03-2020 13:18:02

Tu pregunta de los teléfonos es igual. Lo mismo se suman manzanas que naranjas.
Y procura escribir un poco más claro, porque no hay dios que lo entienda.

ecfisa 27-03-2020 13:22:07

Hola.

Código Delphi [-]
function QuitarProvincia(s: string): string;
begin
  Result := Trim(Copy(s, Pos(')', s) + 1, MaxInt));
end;

Si las lìneas se encontraran en un TMemo por ejemplo, podrìas hacer:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Memo1.Lines.Count-1 do
    Memo1.Lines[i] := QuitarProvincia(Memo1.Lines[i]);
end;

Saludos :)

igamerpc 27-03-2020 13:38:15

Ese ya sabia que funciona pero no tengo Memo1. Lo estoy haciendo en el registro de la tabla. Pido disculpa de anterior si no entiende, vuelvo escribir otra vez mas claro lo intento.
Ejemplo provincias.lines.count-1 ese no funciona.

igamerpc 27-03-2020 13:41:21

Cita:

Empezado por Casimiro Notevi (Mensaje 536490)
Tu pregunta de los teléfonos es igual. Lo mismo se suman manzanas que naranjas. Y procura escribir un poco más claro, porque no hay dios que lo entienda.



Es verdad parecido a eso. Pero eliminar y no añadir. Quitar parentesis y numero incluido dentro.

ecfisa 27-03-2020 13:44:19

Hola.
Cita:

Empezado por igamerpc (Mensaje 536492)
Ese ya sabia que funciona pero no tengo Memo1. Lo estoy haciendo en el registro de la tabla.
...

Entonces pon algo de tu código como para sugerirte algo específico, de otro modo nos vemos obligados a publicar ejemplos genéricos.

Saludos :)

igamerpc 27-03-2020 13:53:34

Te voy a poner ejemplo mio con pulsar un boton que salga para resumen.



Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, StrUtils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  number=['0'..'9'];
var
  cadena:string;
  scadena:string;
  s1, s2, s3: string;
  p1, p2:integer;
  p:string;
begin
  cadena := '(131) Betanzos 2 (A Coruña)';
  p1 := Pos('(', cadena);
  p2 := PosEx(')', cadena, p1);
  p:= delete(cadena, p1+1, p2-p1-1));;
  showmessage(p);
end;

end.


El resultado seria eso: Betanzos 2 (A Coruña)


He visto internet sobre delete pero salia algo incompatible, no se si ese programa es correcto o fallo algo.

ecfisa 27-03-2020 14:00:56

Hola.

Basandome en tu código sería:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  cadena:string;
begin
  cadena := '(131) Betanzos 2 (A Coruña)';
  cadena :=  Trim(Copy(cadena, Pos(')', cadena) + 1, MaxInt));
  ShowMessage(cadena);
end;

Saludos :)

igamerpc 27-03-2020 14:04:06

Ahora si funciona. Trim pense eliminar espacio blanco. Y no sabia si funciona tb con cadena.


Gracias

ecfisa 27-03-2020 14:06:20

Hola.

Si, es mas seguro usar Trim que Pos(')', cadena) + 2 ya que, podría haber algún caso en que el paréntesis estuviera pegado al nombre y entonces eliminaríamos la primera letra del mismo.

Saludos :)

ecfisa 27-03-2020 14:25:28

Hola de nuevo.

Sin embargo, si tu intención era usar el procedimiento Delete, podes hacerlo así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  cadena:string;
begin
  cadena := '(131) Betanzos 2 (A Coruña)';
  Delete(cadena, 1, Pos(')', cadena)+1);
  ShowMessage(Trim(cadena));
end;

Saludos :)

igamerpc 27-03-2020 14:53:25

Ese tambien. Gracias

movorack 27-03-2020 16:44:36

o con una expresión regular como esta "\(\s*\d*\s*\)" se encuentran todos los números encerrados en paréntesis y se eliminan.


La franja horaria es GMT +2. Ahora son las 09:12:24.

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