文字列に「@」が含まれているかどうかを確認する方法[重複]

Aug 22 2020

Ifステートメントを使用しようとしましたが、編集に@を入力した場合にのみメッセージが表示されます

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;

回答

3 AndreasRejbrand Aug 21 2020 at 23:26

確かに、条件ival = emailtrue iffで ivalありemail、同一の文字列です。ival@であるため、emailが正確である場合、条件は真@です。

@内にが見つかったかどうかを確認しemailます。これを行うには、Pos関数を使用できます。この関数は、文字列内で最初に出現する部分文字列の最初の文字の1から始まるインデックスを返すか、文字列内0に部分文字列が見つかりません。

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

at文字を保持する変数は実際には必要ないことに注意してください。

Delphiの最新バージョンでは、次のように書くことをお勧めします。

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

TStringHelper.Containsこれは読みやすいので、を使用します。

2 Charlie Aug 21 2020 at 23:31

Pos関数を使用して、@文字が電子メール文字列に含まれるかどうかを確認できます。

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

これはDelphiでのメールアドレスの検証に関する記事です

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