Ci sono un paio di modi per farlo. È possibile dividere la stringa sul carattere dello spazio e quindi inserirla in TStringList. È quindi possibile utilizzare la proprietà Value [String] di TStringList per ottenere il valore di un determinato nome.
Per fare questo, fare una stringa sostituire di tutti gli spazi con le virgole:
newString := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
quindi importare il risultato in un TStringList:
var
MyStringList : TStringList;
begin
MyStringList := TStringList.Create;
try
MyStringList.CommaText := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
Result := MyStringList.Values['email'];
finally
MyStringList.Free;
end;
end;
Questo vi darà il valore di posta elettronica. Dovrai quindi dividere la stringa con il simbolo "@", che è un esercizio relativamente banale. Naturalmente, questo funziona solo se gli spazi sono veramente un delimitatore tra i campi.
In alternativa si potrebbe usare un'espressione regolare, ma Delphi non supporta nativamente coloro (avreste bisogno di una libreria di espressioni regolari - vedi here)
*** Smasher notato (D2006 +) delimitatore/testo delimitato che apparirebbe qualcosa di simile:
MyStringList.Delimiter := ' ';
MyStringList.DelimitedText := oldString;
Result := MyStringList.Values['email'];
fonte
2009-10-30 10:58:06
Perché downvote? Questa è una domanda valida IMHO. – jpfollenius
sì, ma potresti aver appena cercato la parola email, saltare il '=', eliminare ogni carattere fino a quando non premi @ ... – Skuta
No, perché 'email' può capitare ovunque - all'interno di un valore precedente, all'interno di un ex nome della proprietà ... – jpfollenius