Il y a plusieurs façons de le faire. Vous pouvez diviser la chaîne sur le caractère espace, puis le nourrir dans TStringList. Vous pouvez ensuite utiliser la propriété Value [String] de TStringList pour obtenir la valeur d'un nom donné.
Pour ce faire, faire une chaîne de remplacer tous les espaces par des virgules:
newString := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
importer ensuite le résultat dans un TStringList:
var
MyStringList : TStringList;
begin
MyStringList := TStringList.Create;
try
MyStringList.CommaText := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
Result := MyStringList.Values['email'];
finally
MyStringList.Free;
end;
end;
Cela vous donnera la valeur e-mail. Vous devrez ensuite diviser la chaîne au symbole "@" qui est un exercice relativement trivial. Bien sûr, cela ne fonctionne que si les espaces sont vraiment un délimiteur entre les champs.
Sinon, vous pouvez utiliser une expression régulière, mais Delphi ne prend pas en charge les nativement (vous auriez besoin d'une bibliothèque regex - voir here)
*** Smasher noté (D2006 +) Délimiteur/texte Délimité qui examinerait quelque chose comme ceci:
MyStringList.Delimiter := ' ';
MyStringList.DelimitedText := oldString;
Result := MyStringList.Values['email'];
Pourquoi downvote? Ceci est une question valide à mon humble avis. – jpfollenius
ouais, mais vous pourriez avoir juste cherché le mot d'email, passez le '=', bouclez chaque caractère jusqu'à ce que vous frappiez le @ ... – Skuta
Non, parce que 'email' peut se produire n'importe où - dans une ancienne valeur, dans un ancien nom de la propriété ... – jpfollenius