2010-06-17 58 views
6

Tôi có một chuỗi đơn giản được phân cách bởi một số ký tự, giả sử dấu phẩy. Tôi sẽ có thể tạo một TStringList và đặt dấu phân cách của nó thành dấu phẩy sau đó đặt DelimitedText thành văn bản tôi muốn phân tích cú pháp và nó sẽ được phân tích cú pháp tự động.Phân tích cú pháp một chuỗi bằng cách sử dụng dấu phân tách cho một TStringList, dường như cũng phân tích cú pháp trên dấu cách (Delphi)

Vấn đề là khi tôi nhìn vào đầu ra, nó cũng bao gồm các khoảng trắng làm dấu phân cách và cắt các kết quả của tôi. Làm thế nào tôi có thể tránh điều này, hoặc là có một cách tốt hơn để làm điều này.

Trả lời

22

Có thuộc tính StrictDelimiter trên TStringList. Đặt nó thành True và nó sẽ chỉ phân tích cú pháp trên dấu tách, không phải dấu cách.

+10

Lưu ý: Đây là chỉ có sẵn từ Delphi 2005 (hoặc 2006) mà thôi. Nếu bạn đang sử dụng một phiên bản cũ hơn, bạn có thể tạo lớp con của riêng bạn của TStringList với thuộc tính "StrictDelimitedText". Thật không may SetDelimitedText là cả tư nhân và phi ảo (trong D7 ít nhất), do đó bạn không thể ghi đè nó. –

5

Đó là hành vi tiêu chuẩn, có tài liệu của thuộc tính TStrings.DelimitedText. Bạn muốn đặt thuộc tính StrictDelimiter thành đúng để tắt hành vi đó.

+4

Mason đánh bại bạn ;-) –

+3

Có lẽ giá Rob trả cho định dạng đẹp hơn :) – jpfollenius

4

Bạn có thể có một cái nhìn vào chức năng "ExtractStrings", nếu bạn đang sử dụng d7

Các vấn đề liên quan