Function string=, string/=, string<, string>, string<=, string>=, string-equal, string-not-equal, string-lessp, string-greaterp, string-not-greaterp, string-not-lessp

Syntax:

!!! Need to cross-check the return values here against CLtL for accuracy. My guess is that something's been corrupted along the way. -kmp 27-May-91

string= string1 string2 &key start1 end1 start2 end2 generalized-boolean

string/= string1 string2 &key start1 end1 start2 end2 mismatch-index

string< string1 string2 &key start1 end1 start2 end2 mismatch-index

string> string1 string2 &key start1 end1 start2 end2 mismatch-index

string<= string1 string2 &key start1 end1 start2 end2 mismatch-index

string>= string1 string2 &key start1 end1 start2 end2 mismatch-index

string-equal string1 string2 &key start1 end1 start2 end2 generalized-boolean

string-not-equal string1 string2 &key start1 end1 start2 end2 mismatch-index

string-lessp string1 string2 &key start1 end1 start2 end2 mismatch-index

string-greaterp string1 string2 &key start1 end1 start2 end2 mismatch-index

string-not-greaterp string1 string2 &key start1 end1 start2 end2 mismatch-index

string-not-lessp string1 string2 &key start1 end1 start2 end2 mismatch-index

Arguments and Values:

18.2.0 4 18.2.0 11 string1—a string designator.

string2—a string designator.

start1, end1bounding index designators of string1. The defaults for start and end are 0 and nil, respectively.

start2, end2bounding index designators of string2. The defaults for start and end are 0 and nil, respectively.

generalized-boolean—a generalized boolean.

mismatch-index—a bounding index of string1, or nil.

Description:

18.2.0 9These functions perform lexicographic comparisons on string1 and string2. string= and string-equal are called equality functions; the others are called inequality functions. The comparison operations these functions perform are restricted to the subsequence of string1 bounded by start1 and end1 and to the subsequence of string2 bounded by start2 and end2.

A string a is equal to a string b if it contains the same number of characters, and the corresponding characters are the same "char<", "char-lessp" => "char=", "char-equal" in next line thanks to Barmar! -kmp 22-Jan-92under char= or char-equal, as appropriate.

18.2.0 10A string a is less than a string b if in the first position in which they differ the character of a is less than the corresponding character of b according to char< or char-lessp as appropriate, or if string a is a proper prefix of string b (of shorter length and matching in all the characters of a).

Sandra is a little uncomfortable with the use of "equal" in the next two paragraphs. -kmp 13-Jan-92The equality functions return a generalized boolean that is true if the strings are equal, or false otherwise.

The inequality functions return a mismatch-index that is true if the strings are not equal, or false otherwise. When the mismatch-index is true, it is an integer representing the first character position at which the two substrings differ, as an offset from the beginning of string1.

This referred only to string= and string-equal, but was confusing and redundant. -kmp 25-Jul-91 18.2.0 5 The equality functions return \term{false} if the substrings being compared are of unequal length; that is, if \code (not (= (- end1 start1) (- end2 start2))) \endcode is \term{true}, then the functions return \term{false}.

The comparison has one of the following results:

Barrett: Implied by description of bounding. All of these \term{functions} observe the \term{fill pointer}.

Examples:

18.2.0 6

 (string= "foo" "foo") → true
 (string= "foo" "Foo") → false
 (string= "foo" "bar") → false
 (string= "together" "frog" :start1 1 :end1 3 :start2 2) → true
 (string-equal "foo" "Foo") → true
 (string= "abcd" "01234abcd9012" :start2 5 :end2 9) → true
 (string< "aaaa" "aaab") → 3
 (string>= "aaaaa" "aaaa") → 4
 (string-not-greaterp "Abcde" "abcdE") → 5
 (string-lessp "012AAAA789" "01aaab6" :start1 3 :end1 7
                                      :start2 2 :end2 6) → 6
 (string-not-equal "AAAA" "aaaA") → false

Side Effects:

None.

Affected By:

None.

Exceptional Situations:

None.

See Also:

char=

Notes:

18.2.0 3equal calls string= if applied to two strings.