Istnieje kilka sposobów, aby to zrobić. Możesz podzielić łańcuch na znak spacji, a następnie wprowadzić go do TStringList. Następnie możesz użyć właściwości Value [String] TStringList, aby uzyskać wartość danej nazwy.
Aby to zrobić, wykonaj ciąg zastąpić wszystkich pomieszczeniach przecinkami:
newString := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
następnie zaimportować wynik w TStringList:
var
MyStringList : TStringList;
begin
MyStringList := TStringList.Create;
try
MyStringList.CommaText := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
Result := MyStringList.Values['email'];
finally
MyStringList.Free;
end;
end;
To daje wartość e-mail. Następnie musisz podzielić ciąg znaków na symbol "@", który jest stosunkowo trywialnym ćwiczeniem. Oczywiście działa to tylko wtedy, gdy spacje są rzeczywiście ogranicznikami między polami.
Alternatywnie można użyć wyrażenia regularnego, ale Delphi nie obsługuje tych natywnie (należałoby bibliotekę regex - patrz here)
*** Smasher zauważyć (D2006 +) Ogranicznik/tekst rozdzielany który wyglądałby coś takiego:
MyStringList.Delimiter := ' ';
MyStringList.DelimitedText := oldString;
Result := MyStringList.Values['email'];
Dlaczego downvote? To jest poprawne pytanie IMHO. – jpfollenius
tak, ale mógłbyś po prostu wyszukiwać e-maile, pomijać "=", zapętlać każdą z nich, aż trafisz na @ ... – Skuta
Nie, ponieważ "e-maile" mogą pojawić się w dowolnym miejscu - w dawnej wartości, w środku nazwa nieruchomości ... – jpfollenius