String collation
In BBC BASIC, strings are well-ordered and can be compared to one another in the same way as numbers, using =
, <
, >
, <=
, >=
and <>
. The comparison operators have been designed to lead to a collation sequence similar to those used for telephone directories and library catalogues.
The equality of strings is straightforward: two strings are equal if and only if they are both the empty string, ""
, or they have the same length and the characters at each position are equal in both strings. Note that BASIC strings may contain characters of 'ASCII' value 0 to 255.
=
returns TRUE
iff its two operands are equal, FALSE
otherwise. <>
returns FALSE
iff they are equal, TRUE
otherwise.
The comparison of strings is more complicated, but only slightly. Let A$
and B$
be strings, and let us start at the first character of each.
- If we are beyond the end of both strings, then
A$
is equal toB$
. - Otherwise if we are beyond the end of
B$
, thenA$
is greater thanB$
. - Otherwise if we are beyond the end of
A$
, thenA$
is less thanB$
. - Otherwise if the current character in
A$
has a higher 'ASCII' value than the one inB$
, thenA$
is greater thanB$
. - Otherwise if the current character in
A$
has a lower 'ASCII' value than the one inB$
, thenA$
is less thanB$
. - Otherwise the current characters are both present and equal, and we advance to the next character in both strings, and start again.
Therefore the longer string is not necessarily the greater one. For example, "Sandra"
is greater than "Sand"
, but less than "Sandy"
. The empty string, ""
, is less than any other string. Note that the collation sequence is case-sensitive, and with regard to ASCII, any uppercase letter compares less than any lowercase one.
<
returns TRUE
iff the left-hand operand is less than the right, FALSE
otherwise. >
returns TRUE
iff the left-hand operand is greater than the right, FALSE
otherwise.
<=
returns TRUE
iff the left-hand operand is less than, or equal to, the right, FALSE
otherwise. >=
returns TRUE
iff the left-hand operand is greater than, or equal to, the right, FALSE
otherwise.
-- beardo 23:07, 24 September 2007 (BST)