Come verificare se "@" è presente in una stringa [duplicato]
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
In effetti, la condizione ival = email
è true
iff ival
e email
sono 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 0
la 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.
È 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