PARSE statement   

Purpose

Parse an entire string and extract all delimited fields into an array.

Syntax

PARSE start$, target$() [, {[ANY] delim$ | BINARY}]

Remarks

PARSE parses the entire string or string expression specified by start$, assigning each delimited sub-string to successive elements of target$.  The array specified by target$ may be a dynamic string array, a fixed-length string array, or a nul-terminated string array.

The field delimiter is defined by delim$, which may be one or more characters long.  To be valid, the entire delimiter must match exactly, but the delimiter itself is never assigned as a part of the delimited field. 

If delim$ is not specified or is null (zero-length), standard comma-delimited (optionally quoted) fields are presumed. In this case only, the following parsing rules apply.  If a standard field is enclosed in optional quotes, they are removed.  If any characters appear between a quoted field and the next comma delimiter, they are discarded.  If no leading quote is found, any leading or trailing blank spaces are trimmed before the field is returned.

ANY

If the ANY option is chosen, each appearance of any single character comprising delim$ is considered a valid delimiter.

BINARY

The BINARY option presumes that the string_expr was created with the JOIN$/BINARY function, or its equivalent, which creates a string as a binary image or in the PowerBASIC and/or Visual Basic packed string format:  If a string is shorter than 65535 bytes, it starts with a 2-byte length WORD followed by the string data.  Otherwise it will start a 2-byte value of 65535, followed by a DWORD indicating the string length, then finally the string data itself.

It is usually advantageous to dimension target$ to the correct size with the use of the PARSECOUNT function.  The PARSE statement is typically much more efficient, as a whole, than repeated use of the PARSE$ function when it is necessary to parse an entire string expression.

The JOIN$ function is the natural complement to the PARSE statement.

See also

JOIN$, PARSE$, PARSECOUNT, PATHNAME$, PATHSCAN$

Example

a$ = "Trevor, Bob, Bruce, Dan, Simon, Jenny"

DIM b$(1 TO PARSECOUNT(a$))

PARSE a$, b$()

ARRAY SORT b$()

Result

b$(1) = "Bob"

b$(2) = "Bruce"

b$(3) = "Dan"

b$(4) = "Jenny"

b$(5) = "Simon"

b$(6) = "Trevor"