Come verificare se "@" è presente in una stringa [duplicato]

Aug 22 2020

Ho provato a utilizzare un'istruzione If, ​​ma mostra il messaggio solo se inserisco @ nella modifica

var
sname , email : string ;
iAge , igrade : integer ;
iVal : string;

begin
ival := '@';
email :=  (edtEmail.Text);
if ival = email then


 begin


Showmessage(' Email Address must contain @ ');
 end;

Risposte

3 AndreasRejbrand Aug 21 2020 at 23:26

In effetti, la condizione ival = emailè true iff ival e emailsono stringhe identiche. Poiché ivalè @, la condizione è vera se e solo se emailè esattamente @.

Vuoi controllare se @si trova all'interno email. Per fare ciò, puoi usare la Posfunzione, che restituisce l'indice in base 1 del primo carattere della prima occorrenza di una sottostringa all'interno di una stringa, oppure 0la sottostringa non si trova nella stringa:

if Pos('@', email) = 0 then
  ShowMessage('The email address must contain @.');

Si noti che in realtà non è necessario che una variabile contenga il carattere at.

Nelle versioni moderne di Delphi, è meglio scrivere

if not email.Contains('@') then
  ShowMessage('The email address must contain @.');

utilizzando TStringHelper.Contains, poiché questo è più facile da leggere.

2 Charlie Aug 21 2020 at 23:31

È possibile utilizzare la funzione Pos per verificare se il carattere @ può essere posizionato nella stringa dell'email.

if Pos('@', email) = 0 then
begin
   Showmessage(' Email Address must contain @ ');
end;

Ecco un articolo sulla convalida degli indirizzi e-mail in Delphi

https://www.howtodothings.com/computers/a1169-validating-email-addresses-in-delphi.html