2010-06-17 8 views
6

Ho una semplice stringa che è delimitata da un certo carattere, diciamo una virgola. Dovrei essere in grado di creare una TStringList e impostare il suo delimitatore su una virgola, quindi impostare DelimitedText sul testo che voglio analizzare e dovrebbe essere analizzato automaticamente.Analizzare una stringa usando un delimitatore per una TStringList, sembra anche analizzare gli spazi (Delphi)

Il problema è quando guardo l'output include anche spazi come delimitatori e taglia i miei risultati. Come posso evitare questo, o c'è un modo migliore per farlo.

risposta

22

C'è una proprietà StrictDelimiter su TStringList. Impostalo su True e analizzerà solo il delimitatore, non gli spazi.

+10

Nota: Questo è disponibile solo da Delphi 2005 (o 2006) solo. Se si utilizza una versione precedente, è possibile creare la propria sottoclasse di TStringList con una proprietà "StrictDelimitedText". Sfortunatamente SetDelimitedText è sia privato che non virtuale (almeno in D7), quindi non è possibile sovrascriverlo. –

5

Questo è il comportamento standard documentato della proprietà TStrings.DelimitedText. Si desidera impostare la proprietà StrictDelimiter su true per disabilitare tale comportamento.

+4

Mason ti ha battuto ;-) –

+3

Probabilmente il prezzo pagato da Rob per la formattazione più bella :) – jpfollenius

4

Si può avere uno sguardo sulla funzione "ExtractStrings", se si utilizza D7