Structural Informatics Group (SIG) logo
Home | Projects | Demos | Downloads | Publications | Local Info | About Us | New site
Go to the first, previous, next, last section, table of contents.



type: function (subr) 
location: built-in
source file: xlstr.c
Common LISP compatible: yes
supported on: all machines


(string/= <string1> <string2> [ <key> <offset> ] ... )
        <string1>       -       a string expression
        <string2>       -       a string expression
        <key>           -       a keyword (one of :START1 :START2 :END1 :END2 )
        <offset>        -       an optional integer expression (for a keyword)


The STRING/= (string-NOT-EQUAL) function takes two string arguments. A non-NIL value is returned if <string1> is not equal to <string2>, otherwise NIL is returned. The non-NIL value returned is the integer index of the first character of <string1> which is CHAR/= the corresponding character of <string2>. This test is case sensitive - the character #\a is different (and of greater ASCII value) than #\A.

The keyword arguments allow for accessing substrings within <string1> and <string2>. The keyword arguments each require the keyword (:START1 :END1 :START2 :END2) and a single integer expression as a pair with the keyword first and the integer second. The pairs may be in any order. The start keywords specify the starting offset of the substring. A value of 0 starts the string at the beginning (no offset). The end keywords specify the ending offset of the substring. A value of 3 ends the string after the 3rd character (an offset of 3 characters).


(string/= "a" "b")                      ; returns 0
(string/= "a" "a")                      ; returns NIL
(string/= "a" "A")                      ; returns 0
(string/= "A" "a")                      ; returns 0
(string/= "abc" "abc ")                 ; returns 3
(string/= "J Smith" "K Smith"           ; strip off the first chars 
           :start1 1 :start2 1)         ; returns NIL
(string/= "abc" "123456789"             ; leave just the first 3 chars 
           :end2 3 :end1 3)             ; returns 0

NOTE: Be sure that the STRING/= function is properly typed in. The '/' is a forward slash. It is possible to mistakenly type a '\' (backslash). This is especially easy because the character mechanism is '#\a'. If you do use the backslash, no error will be reported because backslash is the single escape character and the LISP reader will evaluate 'STRING\=' as 'STRING='. No error will be reported, but the sense of the test is reversed.

Go to the first, previous, next, last section, table of contents.