Có một số cách để thực hiện việc này. Bạn có thể chia chuỗi trên ký tự khoảng trắng rồi đưa nó vào TStringList. Sau đó bạn có thể sử dụng thuộc tính Value [String] của TStringList để lấy giá trị của một tên đã cho.
Để làm điều đó, làm một chuỗi thay thế của tất cả các không gian bằng dấu phẩy:
newString := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
Sau đó nhập kết quả vào một TStringList:
var
MyStringList : TStringList;
begin
MyStringList := TStringList.Create;
try
MyStringList.CommaText := StringReplace(oldString, ' ', ',', [rfReplaceAll]);
Result := MyStringList.Values['email'];
finally
MyStringList.Free;
end;
end;
này sẽ cung cấp cho bạn giá trị email. Sau đó, bạn sẽ cần phải chia chuỗi tại ký hiệu "@", đó là một bài tập tương đối tầm thường. Tất nhiên, điều này chỉ hoạt động nếu không gian thực sự là một dấu phân cách giữa các trường.
Hoặc bạn có thể sử dụng một biểu thức chính quy nhưng Delphi không hỗ trợ những natively (bạn cần một thư viện regex - xem here)
*** đập bể lưu ý (D2006 +) Delimiter/văn bản Delimited mà sẽ trông một cái gì đó như thế này:
MyStringList.Delimiter := ' ';
MyStringList.DelimitedText := oldString;
Result := MyStringList.Values['email'];
Nguồn
2009-10-30 10:58:06
Tại sao downvote? Đây là một câu hỏi hợp lệ IMHO. – jpfollenius
vâng, nhưng bạn có thể vừa tìm kiếm từ email, bỏ qua '=', lặp lại từng ký tự cho đến khi bạn nhấn vào ... – Skuta
Không, vì 'email' có thể xảy ra ở bất kỳ đâu - bên trong giá trị cũ, bên trong tên thuộc tính ... – jpfollenius